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

来源:互联网 发布:recyclerview优化 编辑:程序博客网 时间:2024/06/05 15:52

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

1、装载vs2010和matlab2014a

这两个东西我就不单独拿出来说了,网上教程一堆,唯一要注意的是matlab2014a是否完全破解,如果没完全破解,在编译dll的时候会出现问题。
大家在按照网上的方法破解完成后,到下载地址
下载文件,然后将其中的win64/bin/win64中的3个文件替换掉matlab2014a/bin/win64下的对应文件

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++ Shared Library,点击+号,将自己需要编译的.m文件选中,在Library Name那里给动态库写好名字,然后点击package。等待后编译完成,如图。
这里写图片描述
然后可以找到如下图所示的.dll, .h, .lib
这里写图片描述

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);    }

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

3 0
原创粉丝点击