Matlab R2014a 由.m文件产生C代码,并在VS2010中测试

来源:互联网 发布:世界最快的数学计算法 编辑:程序博客网 时间:2024/05/24 02:04

1、首先,准备.m文件:mySub.m

function c = mySub(a,b)%#codegenc = a - b;end

其中,%#codegen可以防止出现警告错误

2、在matlab的命令行窗口输入mex -setup,回车,根据提示选择编译器:如果已安装VS2010,会自动配置为Microsoft Visual C++ 2010 (C),如需其他语言,可按需选择;

mex -setup
MEX 配置为使用 ‘Microsoft Visual C++ 2010 (C)’ 以进行 C 语言编译。
Warning: The MATLAB C and Fortran API has changed to support MATLAB
variables with more than 2^32-1 elements. In the near future
you will be required to update your code to utilize the
new API. You can find more information about this at:
http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html.
要选择不同的语言,请从以下选项中选择一种命令:
mex -setup C++
mex -setup FORTRAN

3、在matlab的命令行窗口输入coder,回车,弹出MATLAB Coder Project对话框。在New选项卡Name中输入工程名称 mySub.prj,点击确定,打开MATLAB Coder MEX Function对话框;

4、在Overview选项卡中,点击添加文件,弹出对话框,选中mySub.m打开,并定义输入变量a,b的数据类型;

5、选中Build选项卡,Output type中选择MEX FUNCTION,生成mex函数,测试程序是否正确

6、Output type中选择c/c++ Static Library,选中Generate code only,点击Build;

7、在当前目录的 MATLAB/ codegen/lib/simpleProduct/ 下可以看到生成一堆.c 和 .h 文件;

8、在VS2010中新建一个C的工程,将codegen/lib/simpleProduct/ 下的所有.c和.h文件拷到该工程目录下并添加到应用程序中,新建一 main.c文件,其内容如下;

#include <stdlib.h>#include <stdio.h>#include "mySub.h"#include "mySub_initialize.h"#include "mySub_terminate.h"int main(){    mySub_initialize();    printf("%lf",mySub(4.5,1));    getchar();    mySub_terminate();    return 0;}

9、编译该工程并查看运行结果

结果出现如下错误:

“无法找到“XXX.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件。”

解决办法:

首先打开菜单 项目->项目属性页
1. 选择 配置属性->链接器->调试->生成调试信息 改为 “是”
2. 选择 配置属性->C/C++ ->常规->调试信息格式 改为 用于“编辑并继续”的程序数据库(/ZI)
3. 选择 配置属性->C/C++ ->优化->优化 改为 禁用(/Od)

重新运行,成功!

0 0
原创粉丝点击