1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > vc调用matlab生成的C++dll库总结。

vc调用matlab生成的C++dll库总结。

时间:2024-01-24 12:27:14

相关推荐

vc调用matlab生成的C++dll库总结。

实验室的一个项目需要调用matlab程序。经过再三考虑,决定使用vc调用matlab导出库的形式。而我主要负责与matlab程序结合的工作。以下是今天工作的简要总结。全当是个备忘吧。

1:在matlab中选择compiler。

在命令行窗口输入:mex -setup

按照提示选择vc6.0.由于使用的是matlab7,不识别vs和,无奈有装的vc6.0。但听说最新版的matlab可以识别。

2:选择builder.

输入:mbuilder -setup

同样选择vc6.0

3:生成dll。

输入:mex -W cpplib:mydll -T link:lib test.m

4:在vc中使用DLL。

1:配置环境

1:在vc++目录中

包含目录:1:生成的mydll.h所在目录。

2:matlab 内的include目录。

库目录:1:mydll.lib所在目录。

2:matlab的lib目录。

:2:在连接器-》输入-》附加依赖项

输入:mydll.lib mclmcrrt.lib mclmcr.lib

2:将mydll.h加入工程。mydll.dll和mydll.ctf放入工程目录。//不是仅仅需要.h和.dll文件吗?为什么还需要。ctf文件。不明白。

注意事项:

1:在main中调用mydll中的函数之前,一定要调用mydllInitilize()函数。否则将会出现错误。

int main(){if(!mydllInitlize()){cout<<"初始化失败!"<<endl;return -1;}//调用dll中的函数。return 0;}

2:将.m文件导出dll库后,如果需要再次编译,一定要首先清空原来dll所在的目录,否则将会出现mexfunction entry point missing 的错误。具体原因不详,估计是新生成的文件覆盖原有文件失败。这都是血的教训啊。花了我大量时间找错。

3:在调用多个matlab导出的dll库时,连接过程中会出现LNK: void __cdecl mclcppMlfF multiply defined

即void __cdecl mclcppMlfF 重复定义的情况。采取#ifndef 。。。方法,不行。网上搜了下,有遇到类似情况的,但是那家伙也没有解决。后来搜LNK错误,有一大堆解决方案。最后采取在项目属性-》配置属性-》链接器-》命令行-》/force 强制系统忽略此错误来解决。不管如何至少解决了这个错误。

ithzhang

.4.7下午

.4.18补充

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。