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的时候,部分为全部小写而部分保持原样。

 

 

 

 

 

 
posted @ 2012-08-29 22:24  liang_l  阅读(3919)  评论(1编辑  收藏  举报