C++/Matlab混合编程(vs2010和matlabR2014a)

这几天在使用matlab/c++混编时,遇见很多问题,解决起来很痛苦,分享一些经验给大家,希望大家少走些弯路。
首先这里说下,不建议使用matlab2010a和vs2010来混合编程,因为我自己尝试过,遇到很多问题,matlab2010a是在vs2010前发布的,所以自身是识别不到vs2010编译器的,建议用matlab2010b以上。

1、装载vs2010和matlab2014a

这两个东西我就不单独拿出来说了,网上教程一堆。

2、编译dll动态链接库

打开matlabR2014a,在命令行窗口输入
mex -setup C++
mex -setup C++ -client MBUILD
配置好编译器,如果出现如下语句,证明配置好了

MEX 配置为使用 'Microsoft Visual C++ 2010' 以进行 C++ 语言编译。
MBUILD 配置为使用 'Microsoft Visual C++ 2010 (C)' 以进行 C 语言编译。

然后再命令行窗口输入deploytool,出现如下窗口,选择Library Compiler
C++/Matlab混合编程(vs2010和matlabR2014a)_第1张图片
然后再如下窗口中
C++/Matlab混合编程(vs2010和matlabR2014a)_第2张图片
左上方选择C++ Shared Library,点击+号,将自己需要编译的.m文件选中,在Library Name那里给动态库写好名字,然后点击package。等待后编译完成,如图。
C++/Matlab混合编程(vs2010和matlabR2014a)_第3张图片
然后可以找到如下图所示的.dll, .h, .lib
C++/Matlab混合编程(vs2010和matlabR2014a)_第4张图片

3、配置windows下vs2010的环境

将上面生成的.dll,.h,.lib放到你的vs2010工程文件里。右键电脑->属性->高级系统设置->环境变量->系统变量,在Path中添加
Matlab2014a安装路径\bin\win64
Matlab2014a安装路径polyspace\bin
如果有的话就不用添加。
在vs2010中右键vs工程->属性->vc++目录中的包含文件中加入Matlab2014a安装路径\extern\include
库目录总添加
Matlab2014a安装路径\extern\lib\win64\microsoft
c/c+±>常规下的附加包含目录中添加
Visual Studio 2010 Project\当前工程\当前工程,及刚才.lib,.h,.dll所放在的文件夹。
链接器->常规下的附加库目录添加Matlab2014a安装路径\extern\lib\win64\microsoft
输入中的附加依赖项中添加
libeng.lib
libmat.lib
libmex.lib
libmx.lib
mclmcrrt.lib
mclmcr.lib
刚才用matlab编译的.lib
这时候环境就配置完了。
在调用matlab函数功能前,先调用

	if (!MyInitialize())    //初始化,在.h中能找到这个函数,对应的名字
	{
		cout << "Could not initialize MatDLL!" << endl;
		exit(0);
	}

必须要有上述的代码。然后就可以测试你自己的函数功能是否正确

你可能感兴趣的:(图形学)