VC2008调用matlab生成的dll和lib
在Matlab中,编写一个M文件(myadd.m),保存
function [y,z] = MyAddAndMulti(a, b)
% define function, just to demonstrate the idea
y = a+b;
z = a*b;
end
上述函数实现单独的数或者是数组相加和相乘。
设置matlab编译器
过程如下:
1. 在matlab的command window里面敲入mex –setup,(此命令不允许-和setup有空格)matlab会列出所有电脑上所有的编译器。
2. 选择编译器
3.完成之后,敲入mbuild –setup,选择build工具
在MATLAB的command window中输入以下命令:
mcc -W cpplib:MyAddAndMulti -T link:lib MyAddAndMulti.m
在Matlab窗口,可能出现以下警告:
To get started, select MATLAB Help or Demos from the Help menu. Warning: No matching builtin function available for D:\MATLAB7\toolbox\simulink\simulink\set_param.bi
此时,可以进行如下操作:
将 \MATLAB7\toolbox\compiler\deploy\matlabrc.m 中的
81 行 set_param(0,'PaperType',defaultpaper); 82 行 set_param(0,'PaperUnits',defaultunits);
用’%‘注释掉之后,全部选中重新编译了一次,然后重新启动 matlab 就没有警告信息。
上述过程中,matlab中的工作目录要选择好,否则发生下述错误:
??? Error: File "MyAddAndMulti" not found.
在VS平台上(VS2008)
新建工程(win32控制体),完成之后,界面变为
这个时候,在 项目->属性,后可以看到
这个看不到C/C++相关设置,需要在我们建的工程中,加上一个CPP文件后,
此时在C/C++下面
添加附加包含目录
接下来
添加链接库的东西,libmyadd3.lib mclmcrrt.lib mclmcr.lib
运行差不多就对了。
----------------------可能错误---------------------------------------------------------------
发生错误: LINK : fatal error LNK1104: 无法打开文件“mclmcrrt.lib”
解决办法: 在链接器->常规->附加库目录地方没有添加 D:\matlab\extern\lib\win32\microsoft\msvc60(目录视安装情况而定)
建议方案:在matlab中的M文件最好都小写,因为在生成dll和lib的时候,部分为全部小写而部分保持原样。