matlab vs2010编译器xml,如何在MATLAB R2010a 中使用Visual C++ 2010编译器

1、安装补丁VS2010MEXSupport.zip

参考http://www.mathworks.cn/support/solutions/en/data/1-D5W493/index.html?solution=1-D5W493

由于MATLAB R2010a 发布的时间要比

VS2010早,所以在该版本识别不了VC++2010编译器。不过R2010a之后的版本应该不会有这种问题了。

解压补丁包,将其中的文件放到 D:\Program

Files\MATLAB\R2010a\bin\win32\mexopts 文件夹下。

2、在MATLAB中安装VC++ 2010 编译器

打开Matlab,在 command window

中输入 mex -setup

————————————————————————————————————————————-

>> mex -setup

Please choose your compiler for building external interface (MEX)

files:

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

n  (一定要选择 n)

Select a compiler:

[1] Intel C++ 11.1 (with Microsoft Visual C++ 2008 SP1

linker)

[2] Intel C++ 9.1 (with Microsoft Visual C++ 2005 SP1 linker)

[3] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 SP1

linker)

[4] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 Shell

linker)

[5] Intel Visual Fortran 10.1 (with Microsoft Visual C++ 2005 SP1

linker)

[6] Lcc-win32 C 2.4.1

[7] Microsoft Visual C++ 6.0

[8] Microsoft Visual C++ 2005 SP1

[9] Microsoft Visual C++ 2008 Express

[10] Microsoft Visual C++ 2008 SP1

[11] Microsoft Visual C++ 2010

[12] Microsoft Visual C++ 2010 Express

[13] Open WATCOM C++

[0] None

Compiler:12

————————————————————————————————————————————————

注意,如果选择 n 之后,没有列出这么多编译器选项,甚至没有出现VC++ 2010。

不要慌,此时选择 0,即None。

—————————————————————————————————————————————————

Compiler: 0

mex: No compiler selected. No action taken.

**************************************************************************

Warning: The MATLAB C and Fortran API has changed to support

MATLAB

variables with more than 2^32-1 elements. In the near future

you will be required to update your code to utilize the new

API. You can find more information about this at:

http://www.mathworks.com/support/solutions/en/data/1-5C27B9/?solution=1-5C27B9

Building with the -largeArrayDims option enables the new API.

**************************************************************************

—————————————————————————————————————————————————

然后在command window 里再次输入 mex -setup

—————————————————————————————————————————————————

>> mex -setup

Please choose your compiler for building external interface (MEX)

files:

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

n  (一定要选择

n)

—————————————————————————————————————————————————

此时就会列出很多编译器,包括已经VC++2010。如果还没有,可重复几次以上过程。当然前提是必须安装VS2010,否则,再怎么重复,也找不到VC++2010编译器。

列出VC++2010编译器之后,我相信接下该怎么做对大家来说没啥问题。

3、error C2371: 'char16_t' : redefinition; different

basic types

在混合编程中,也许会出现如下错误:

—————————————————————————————————————————————————

C:\Microsoft Visual Studio 10.0\VC\INCLUDE\yvals.h(576) : error

C2371: 'char16_t' : redefinition; different basic types

C:\Matlab\r2010a\extern\include\matrix.h(330) : see declaration of

'char16_t'

—————————————————————————————————————————————————

原因是VS2010中的yvals.h添加了char16_t的定义,而Matlab的matrix.h也包含对char16_t的定义,所以同时包含这两个头文件的话,会导致重复定义char16_t的错误。

解决方案:

参考:http://maciejgryka.com/bits/2011/09/char16_t-conflict-while-mexing-with-vs2010/

完全没有必要修改这两个头文件(以防修改之后,会在将来导致一些问题),只需要在包含matrix.h之前包含yvals.h即可。例如:

#include

#if (_MSC_VER >= 1600)

#define __STDC_UTF_16__

#endif

#include "mex.h"

注:mex.h 包含matrix.h。这就要求我们必须知道所包含的头文件是否包含matrix.h。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值