VS2010和Matlab2012b混合编程 配置详解

一、MATLAB中的操作

1.编写MATLAB函数

function [c]=MyAdd(a,b);
c = a+b;
2.在MATLAB中编译文件

在MATLAB中以此完成如下操作:

   >>mex -setup  %选择VS2010然后一直选Y

   >>mbuild -setup %选择VS2010,然后一直选择Y

   >>mcc -W cpplib:MyAddLib -T link:lib MyAdd  (完成)

其中MyAddLib 就是我们要生成的库文件名,MyAdd是编写的.m文件名,这样就会编译成功,当前文件夹(MATLAB的当前路径应该是你的.m文件的路径)会出现很多新的文件,有用的是*.lib,*.h,*.dll文件,这些文件后面会用到。

VS2010和Matlab2012b混合编程 配置详解_第1张图片

二、系统环境变量的配置


 用户变量:

              ...\MATLAB\extern\lib\win32\microsoft;
              ...\MATLAB\bin\win32


  系统变量:
              ...\MATLAB\runtime\win32;
              ...\MATLAB\bin;
              ...\MATLAB\extern\lib\win32\microsoft;
              ...\MATLAB\bin\win32

三、VS2010环境配置

1.新建一个工程->右击工程名->选择属性

具体配置如下:

2.

VS2010和Matlab2012b混合编程 配置详解_第2张图片

3.

VS2010和Matlab2012b混合编程 配置详解_第3张图片

4.

VS2010和Matlab2012b混合编程 配置详解_第4张图片

5.

VS2010和Matlab2012b混合编程 配置详解_第5张图片

四、代码示例

打开VS2010,新建一个空项目,把刚才生成的 *.h *.dll *.lib文件复制到刚刚新建的工程的文件夹下,并添加到工程当中。

#include
#include "MyAddLib.h"
using namespace std;

int main()
{
	if(!MyAddLibInitialize())
	{
		return -1;
	}
	int a = 10;
	int b = 20;
	int c;
	mwArray mwA(1,1,mxINT32_CLASS);
	mwArray mwB(1,1,mxINT32_CLASS);
	mwArray mwC(1,1,mxINT32_CLASS);
	mwA.SetData(&a,1);
	mwB.SetData(&b,1);
	MyAdd(1,mwC,mwA,mwB);
	c = mwC.Get(1,1);
	cout<

在这个头文件的最后,你可以看到下面的内容:
extern LIB_MyAddLib_CPP_API void MW_CALL_CONV MyAdd(int nargout, mwArray& c, const mwArray& a, const mwArray& b);            
这就是MyAdd的C函数的声明。nargout表示输出变量的个数,其他就是对应了m函数的几个变量。
注意,变量的类型是mwArray,这是Matlab提供的一个特殊的变量类型mwArray是一个类,具体可以查帮助。


本文参考vs2010和Matlab R2012b 混合编程

你可能感兴趣的:(随笔)