Windows10 64位 matlab&VC混合编程

来源:互联网 发布:uu黑历史知乎 编辑:程序博客网 时间:2024/05/13 17:10

看了好多文章,在网上找了好多资料,终于在自己电脑上实现了用VS2013调用Matlab编译的动态库;

我的机器环境是(64位) Windows10  Matlab2015a Visual Studio 2013;由于没有找到破解版的Matlab来支持VS2015的编译器和打包工具,就用的VS2013。

需要注意的问题是64位的机器需要配置64位的工程配置,Matlab配置的mex编译器和mbuild打包工具需要选择一致,我选择的是VS2013,用师姐给的Matlab2014a的库调用就缺少某些.dll文件,这个应该是版本问题


总共分为以下几步:

1.设置系统环境变量

C:\R2015a\bin\win64;

C:\R2015a\bin;

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin;(VS安装路径)

2.VC++目录下的包含目录添加

C:\R2015a\extern\include

C:\R2015a\extern\include\win64 

D:\Documents\VS2013\test\test

估计是BUG,在VS中添加目录如果路径中某个文件夹名字包含空格可能会导致VS无法识别路径,所以我把我的Matlab包和工程文件夹都拷贝到没有空格的文件夹里面了。。。也以防万一

3.VC++目录下的库目录添加

C:\R2015a\bin\win64

C:\R2015a\extern\lib

D:\Documents\VS2013\test\test

C:\R2015a\extern\lib\win64\microsoft

C:\R2015a\extern\lib\win32\microsoft

4.C/C++中的常规里面的附加包含目录添加

C:\R2015a\extern\include

5.连接器下面的常规中的附加库目录添加

C:\R2015a\extern\lib\win64\microsoft

6.连接器下面的输入中的附加依赖项添加

libeng.lib
libmat.lib
libmex.lib
libmx.lib
mclmcrrt.lib
mclmcr.lib

libMyAdd.lib

7.在将Matlab编译好的.dll .lib .h文件拷贝到工程目录里面和主函数所在文件夹放在一起,并添加至工程

8.在配置管理器中将工程配置为x64(这一步容易被忽略)


下面来看看主函数怎么调用加法函数,源代码样例:

// test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "engine.h"#include "mclmcr.h"#include "mclcppclass.h"#include "libMyAdd.h"#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){if (!libSumInitialize()){//initilize failed!!!"<<std::endl;std::cout << "错误..." << std::endl;return -1;}double a = 6;double b = 9;double c;mwArray mwA(1, 1, mxDOUBLE_CLASS);mwArray mwB(1, 1, mxDOUBLE_CLASS);mwArray mwC(1, 1, mxDOUBLE_CLASS);mwA.SetData(&a, 1);mwB.SetData(&b, 1);MyAdd(1, mwC, mwA, mwB);c = mwC.Get(1, 1);cout << c << endl;system("PAUSE");return 0;}

1 0