[Matlab]vs2010和matlab2014a混合编程示例,错误分析。

基于vs2010

基于matlab2014a

基于64位操作系统

 

1、在matlab中定义一个函数

function C=Add(A,B)
     C=A+B;
end

2、命令行输入“mex -setup c++”%注意mex和setup后面都有空格。选择编译器,自动出现vs2010

 

[Matlab]vs2010和matlab2014a混合编程示例,错误分析。_第1张图片

 

3、命令行输入“mbuild -setup”%注意mbuild后面都有空格。选择c++模式

[Matlab]vs2010和matlab2014a混合编程示例,错误分析。_第2张图片

 

4、命令行输入“mcc -W cpplib:libAdd  -T link:lib Add.m”%注意空格,最后的Add.m是要编译的文件。

等待,编译完成会有提示,同时会生产一些文件,其中,dll和lib和h文件是我们需要的。

[Matlab]vs2010和matlab2014a混合编程示例,错误分析。_第3张图片

5、打开vs2010,新建控制台程序。

第一个注意点:项目属性-配置管理器-活动解决方案,新建,选择X64,然后编译程序,生成x64的文件夹

(如果不选择会出现matlabAdd.obj : error LNK2019: 无法解析的外部符号 _mclcppCreateError_proxy,。。。这种错误)

[Matlab]vs2010和matlab2014a混合编程示例,错误分析。_第4张图片

 

6、编译程序,将4中的三个文件分别拷贝到项目中。dll拷贝到。。\matlabAdd\x64\Debug下(matlabAdd是建立的项目名,在dubug模式下调试)

新建一个文件夹,将lib和h拷贝到里面,我们还要拷贝一些matlab的内容,为了管理。

7、打开matlab的安装目录,要拷贝一些东西到6中文件夹内。h文件在include中,lib文件在lib中的win64的microsoft下。

[Matlab]vs2010和matlab2014a混合编程示例,错误分析。_第5张图片

[Matlab]vs2010和matlab2014a混合编程示例,错误分析。_第6张图片

 

8、在VS中将这些文件添加进项目。(解决方案右键,添加-现有项)

9、添加测试程序如下,内容都有注释。

#include 
#include "matlab/libAdd.h"//函数添加头文件

void main()
{
	if (!libAddInitialize())//初始化,前面是libAdd是=要注意,不要搞错
		return;
	int a=1;
	int b=8;
	int c;
	mwArray mwA(1,1,mxINT64_CLASS);//matlab中的数据都是矩阵,所以要用矩阵转换
	mwArray mwB(1,1,mxINT64_CLASS);
	mwArray mwC(1,1,mxINT64_CLASS);
	mwA.SetData(&a,1);//将a加入矩阵
	mwB.SetData(&b,1);
	Add(1,mwC,mwA,mwB);//调用
	c=mwC.Get(1,1);//获取数据
	std::cout<

 

10、如果没有加6行的初始化代码,出现如下错误。(matlabAdd.exe 中的 0x00000000 处有未经处理的异常: 0xC0000005: 在位置 0x0000000000000000 发生访问冲突)

[Matlab]vs2010和matlab2014a混合编程示例,错误分析。_第7张图片

 

[Matlab]vs2010和matlab2014a混合编程示例,错误分析。_第8张图片

你可能感兴趣的:(matlab)