Windows10 64位 matlab&VC混合编程

原创 2015年11月18日 20:00:05

看了好多文章,在网上找了好多资料,终于在自己电脑上实现了用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;
}

64位系统在VS2010与Matlab混合编程的下的配置方法

废话不多说,仅仅分享我自己用64位操作系统在配置使用VS2010与Matlab混合编程时配置软件所出现的一些错误和相关解决方法。建好工程项目,选择一段正确的测试代码(之后我会附上正确的测试代码)运行时...
  • u013871461
  • u013871461
  • 2015年04月23日 08:51
  • 1028

C/C++与Matlab混合编程初探

Matlab 拥有丰富的功能,编程简单。不过,有些情况下,Matlab程序的执行速度比较慢。C/C++编译执行的程序速度比较快,编程难度上比Matlab要高一些。因此存在一种方案,就是使用Matlab...
  • bendanban
  • bendanban
  • 2014年07月15日 21:42
  • 27203

[Matlab] matlab与C/C++混合编程汇总

matlab 与外部程序的编程接口两大类:                一是 如何在matlab里调用其他语言写的代码。 (见例子:使用C-MEX技术,ActiveX技术)             ...
  • fonjames
  • fonjames
  • 2016年06月01日 15:37
  • 5623

C#和C++混合编程

C#写界面比较方便,而C++则擅长写算法,所以将两者结合起来将会加快程序的开发速度,并保证程序的质量。但C#与C++的混合编程有很多细节问题需要注意,下面简要列举一些并指出相应的解决办法。    ...
  • Kelvin_Yan
  • Kelvin_Yan
  • 2014年11月25日 15:04
  • 6091

Matlab与VC混合编程之二

Matlab与VC混合编程之二 1. 待解决的新问题 在《Matlab与VC混合编程之一》中我们已经实现了在VC中调用Matlab编译M文件生成的COM的方法,并成功的进行了计算并绘制一个点。接下来...
  • zhangkunhn
  • zhangkunhn
  • 2013年07月01日 23:59
  • 824

MATLAB和VS混合编程

MATLAB和VS的混合编程,利用动态链接库 MATLAB R2014a,VS2013;
  • wind_liang
  • wind_liang
  • 2016年05月14日 02:44
  • 2893

MATLAB与C#混合编程实现

MATLAB与C#混合编程实现首先先让楼主小开心一下,因为楼主太笨在这个东西上面花费了很多时间,今天终于实现啦!!!关于这方面的东西我也是查了不少资料,走遍各个技术论坛,但是很少有说的很仔细的,结果就...
  • u013297663
  • u013297663
  • 2015年07月27日 19:54
  • 2185

java和c++混合编程尝试

下载源代码    现在的程序员,不再像以前一样,掌握一种编程语言就可以混得有模有样了,现实的情况是,真实的项目中,通常是涉及多种编程语言,举几个简单的例子,一个软件为了快速开发,可能是使用 Delph...
  • ghevinn
  • ghevinn
  • 2014年05月04日 10:37
  • 2893

C#与C++混合编程之引用(一)

一、在.net平台上,调用dll文件有2种含义 调用托管dll,即你使用.net平台开发的dll,属于托管代码。调用非托管dll,即传统的dll,一般是C++,VB,DELPHI等等开发出来的,属于非...
  • guwenjin29
  • guwenjin29
  • 2016年09月21日 22:47
  • 1557

C#与MATLAB混合编程

C#调用MATLAB画图,混合编程,.Net FramWork平台导致的出错。
  • liu16659
  • liu16659
  • 2016年09月05日 18:09
  • 3731
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows10 64位 matlab&VC混合编程
举报原因:
原因补充:

(最多只允许输入30个字)