关闭

Matlab2015编译生成Dll并在VS2010环境下应用的具体操作步骤(64位系统)

标签: matlabdllvisual studio 201064位win7
2753人阅读 评论(4) 收藏 举报
分类:

背景:本人为一名运动控制方面的算法工程师,因为需要频繁运用MATLAB进行算法仿真,然后需要在实际系统中实现。发现MATLAB能够导出dll直接提供给vs2010使用,搜寻了很多资料,有的讲得不错,但是并不全面。摸索了一整天弄出来一个可行的方法,特此记录,与大家一起分享。


本人操作的软件环境:win7 (64位)+ MATLAB R2015b(64位)+ vs2010


成功运行要点:

1. Windows的系统环境变量设置

2.MATLAB环境下dll生成

3.vs2010工程配置(难点)

4.dll相关文件的拷贝


具体步骤:

1. 在Windows的环境变量里将MATLAB的路径增加到path系统变量下。

操作要点:右击“我的电脑”->属性->高级->环境变量->系统变量,在path变量名下添加MATLAB的路径

直接在末尾用分号依次添加如下内容(前面的内容不要动!):

;C:\Program Files\MATLAB\R2015b\runtime\win64;C:\Program Files\MATLAB\R2015b\extern\lib\win64\microsoft;C:\Program Files\MATLAB\R2015b\bin\win64


2.在MATLAB中生成dll,此处为了举例,只用一个最简单的 add()函数作为示例, a = b + c;

2.1 先脚本写一个add函数,不多说了.命名为add.m

function a = add(b,c)
    a = b+c;
end

2.2 具体配置好参数,生成dll

MATLAB命令行下依次输入>>mex -setup    >>mbuild -setup两个命令,配置好使用vs2010方式进行打包编译

2.3 MATLAB命令行输入>>deploytool,选择Library Compiler进行具体dll生成

2.4选择C++SharedLibray, 按加号添加add.m,两个选项都勾选上,Run time included in package, 最后点击package即可生成dll文件了。

备注:生成的一堆东西里只有第二个文件夹的三个文件是最终用到的add.lib; add.h; add.dll,至此,MATLAB环境的下的任务全部完成,可以关掉了。


3. vs2010环境下dll的调用方法

3.1兴建一个add工程,Visual C++ -> 常规, 兴建一个空工程。

3.2在新工程里添加一个源文件(一定要先添加这个,不然后面配置会出错),把解决方案配置为release和x64模式

3.3最重点的一步,配置工程属性!(仔细看图,不要弄错了)

3.3.1 c/c++->常规->附加包含目录下的配置,直接浏览添加,例如:C:\Program Files\MATLAB\R2015b\extern\include

3.3.2链接器->常规->附加库目录,直接浏览添加,C:\Program Files\MATLAB\R2015b\extern\lib\win64\microsoft

3.3.3链接器->输入->附加依赖项(自己手动输入如下五个项目)

mclmcrrt.lib
mclmcr.lib
libmx.lib
libmat.lib
add.lib

3.4所有配置全部完成,在源码里面增加如下内容

#include <iostream>
#include "mclmcr.h"
#include "matrix.h"
#include "mclcppclass.h"
#include "add.h"
using namespace std;
int main()
{
if(!addInitialize())
{
cout<<"Couldnot initialize lib:myadd!"<<endl;
exit(0);
}
mwArray a(1,1,mxDOUBLE_CLASS);
mwArray b(1,1,mxDOUBLE_CLASS);
mwArray c(1,1,mxDOUBLE_CLASS);
b(1,1)=1;
c(1,1)=2;
add(1,a,b,c);
double*i=new double; 
double tmp;
a.GetData(&tmp,1);
cout << a << endl;
getchar();
return 0;
}

3.5把前面dll文件中的h和lib文件拷贝到源码同一级目录下,把dll文件拷贝到x64/release目录下,大功即可告成!


链接:

http://blog.csdn.net/huiyuanliyan/article/details/50564496环境变量配置

http://blog.sina.com.cn/s/blog_4a0824490102v5ga.html, http://www.ithao123.cn/content-10197080.html本人借鉴的两个可行方法,可以相互补充


后记:

1.本人的环境为64位系统,如果是32位的话配置路径是需要重新修改的,不要紧,方法一致,只是路径不一样而已,可以参考下面的链接。

2.此工程只是一个演示项目,如果需要进一步发挥作用,需要对mwArray类有深入了解。

3.本人混迹CSDN多年,CSDN论坛和博客给我提供了许多帮助,自己从未发过博客,想想有点自私,故而从今开始记录我工作上的点滴,与各位真正的工程师分享。


1
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6752次
    • 积分:131
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:0篇
    • 评论:8条
    最新评论