vc调用matlab生成的C++dll库总结。
2012-04-09 17:01
363 查看
实验室的一个项目需要调用matlab程序。经过再三考虑,决定使用vc调用matlab导出库的形式。而我主要负责与matlab程序结合的工作。以下是今天工作的简要总结。全当是个备忘吧。
1:在matlab中选择compiler。
在命令行窗口输入:mex-setup
按照提示选择vc6.0.由于使用的是matlab7,不识别vs2010和2008,无奈有装的vc6.0。但听说最新版的matlab可以识别。
2:选择builder.
输入:mbuilder-setup
同样选择vc6.0
3:生成dll。
输入:mex-Wcpplib:mydll-Tlink:libtest.m
4:在vc中使用DLL。
1:配置环境
1:在vc++目录中
包含目录:1:生成的mydll.h所在目录。
2:matlab内的include目录。
库目录:1:mydll.lib所在目录。
2:matlab的lib目录。
:2:在连接器-》输入-》附加依赖项
输入:mydll.libmclmcrrt.libmclmcr.lib
2:将mydll.h加入工程。mydll.dll和mydll.ctf放入工程目录。//不是仅仅需要.h和.dll文件吗?为什么还需要。ctf文件。不明白。
注意事项:
1:在main中调用mydll中的函数之前,一定要调用mydllInitilize()函数。否则将会出现错误。
如
intmain()
{
if(!mydllInitlize())
{
cout<<"初始化失败!"<<endl;
return-1;
}
//调用dll中的函数。
return0;
}
2:将.m文件导出dll库后,如果需要再次编译,一定要首先清空原来dll所在的目录,否则将会出现mexfunctionentrypointmissing的错误。具体原因不详,估计是新生成的文件覆盖原有文件失败。这都是血的教训啊。花了我大量时间找错。
3:在调用多个matlab导出的dll库时,连接过程中会出现LNK2005:void__cdeclmclcppMlfFmultiplydefined
即void__cdeclmclcppMlfF重复定义的情况。采取#ifndef。。。方法,不行。网上搜了下,有遇到类似情况的,但是那家伙也没有解决。后来搜LNK2005错误,有一大堆解决方案。最后采取在项目属性-》配置属性-》链接器-》命令行-》/force强制系统忽略此错误来解决。不管如何至少解决了这个错误。
ithzhang
2012.4.7下午
2012.4.18补充
1:在matlab中选择compiler。
在命令行窗口输入:mex-setup
按照提示选择vc6.0.由于使用的是matlab7,不识别vs2010和2008,无奈有装的vc6.0。但听说最新版的matlab可以识别。
2:选择builder.
输入:mbuilder-setup
同样选择vc6.0
3:生成dll。
输入:mex-Wcpplib:mydll-Tlink:libtest.m
4:在vc中使用DLL。
1:配置环境
1:在vc++目录中
包含目录:1:生成的mydll.h所在目录。
2:matlab内的include目录。
库目录:1:mydll.lib所在目录。
2:matlab的lib目录。
:2:在连接器-》输入-》附加依赖项
输入:mydll.libmclmcrrt.libmclmcr.lib
2:将mydll.h加入工程。mydll.dll和mydll.ctf放入工程目录。//不是仅仅需要.h和.dll文件吗?为什么还需要。ctf文件。不明白。
注意事项:
1:在main中调用mydll中的函数之前,一定要调用mydllInitilize()函数。否则将会出现错误。
如
2:将.m文件导出dll库后,如果需要再次编译,一定要首先清空原来dll所在的目录,否则将会出现mexfunctionentrypointmissing的错误。具体原因不详,估计是新生成的文件覆盖原有文件失败。这都是血的教训啊。花了我大量时间找错。
3:在调用多个matlab导出的dll库时,连接过程中会出现LNK2005:void__cdeclmclcppMlfFmultiplydefined
即void__cdeclmclcppMlfF重复定义的情况。采取#ifndef。。。方法,不行。网上搜了下,有遇到类似情况的,但是那家伙也没有解决。后来搜LNK2005错误,有一大堆解决方案。最后采取在项目属性-》配置属性-》链接器-》命令行-》/force强制系统忽略此错误来解决。不管如何至少解决了这个错误。
ithzhang
2012.4.7下午
2012.4.18补充
相关文章推荐
- vc调用matlab生成的C++dll库总结。
- (个人总结)VC++调用Matlab生成的dll图文详解
- VS2008 C++ 调用MATLAB 2009b 生成的DLL
- matlab调用c++生成的DLL
- VS2008 C++ 调用MATLAB 2010a 生成的DLL
- 64位win7下vc2010如何调用matlab2012a中生成的dll文件
- VC++中使用MATLAB的C++数学库和MCC生成的程序(转)
- VC调用MatLab生成的动态链接库
- 关于使用vc++调用matlab生成的dll传递数组的问题
- VC调用matlab生成的动态库
- 【混合编程】VC调用Matlab生成的DLL
- VC调用Matlab生成的dll
- Vb VC++ 调用C++编写的dll库
- Java採用JNI调用VC++生成的dll(Java与C++交互)
- c/c++调用matlab生成dll,exe,com组件
- C++与Matlab混编,调用生成的动态链接库
- c++调用matlab生成的Dll动态连接库
- vc++调用MATLAB complier生成的C动态链接库(画图)
- vc++调用MATLAB complier生成的C动态链接库(输入参数为字符类型)
- vc调用matlab生成的dll实例