【MATLAB】matlabR2010a与vs2010联合编译设置

在matlab中编译C++程序,首先要配置编译器

>> mex -setup

Please choose your compiler for building external interface (MEX) files:

Would you like mex to locate installed compilers [y]/n? y

Select a compiler:

[1] Lcc-win32 C 2.4.1 in D:\MATLAB\R2010a\sys\lcc

[2] Microsoft Visual C++ 2010 in D:\Microsoft Visual Studio 10.0

[0] None

选择2

若没有2的选项,解决方案如下:

网上下载VS2010support文件包【VS2010MEXSupport.rar】

解压,放入相应matlab安装目录中。(例如:D:\MATLAB\R2010a\win32\mexopts)

再次运行上述代码后就会显示[2]了。

另外还有一个常见问题:

VS2010中的yvals.h与Matlab的matrix.h同时包含对char16_t的定义,当同时包含这两个头文件,

会导致重复定义char16_t的错误:

D:\Microsoft Visual Studio 10.0\VC\INCLUDE\yvals.h

(576) : error C2371: 'char16_t' : redefinition;

different basic types

D:\Matlab\r2010a\extern\include\matrix.h(330) : see

declaration of 'char16_t'

最简解决方案:在包含matrix.h之前包含yvals.h

例如:

#include <yvals.h>

#if (_MSC_VER >= 1600)

#define __STDC_UTF_16__

#endif

……

#include "mex.h"