在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"
|
请发表评论