【发布时间】:2012-01-24 08:49:35
【问题描述】:
我正在编译一个Matlab mex文件(在Windows下使用VS2010),以下2个包括:
#include <algorithm> // for std::copy
#include "mex.h"
给我编译错误:
1>d:\svn\trunk\dev\matlab\extern\include\matrix.h(337): 错误 C2371: 'char16_t' : 重新定义;不同的基本类型
我已经尝试将它放在一个命名空间中:
namespace Algo {
#include <algorithm>
}
然后我得到大量其他编译错误,甚至没有使用<algorithm> 中定义的任何内容,例如:
Error 1 error C2039: 'set_terminate' : is not a member of '`global namespace'' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\exception 192
Error 2 error C2873: 'set_terminate' : symbol cannot be used in a using-declaration C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\exception 192
我该如何解决这个问题?
【问题讨论】:
-
您是否尝试过相反的方法,即尝试将 mex 标头放在命名空间中?阅读标题,并找到冲突。通常可以定义一个符号来规避它。
-
它有效,谢谢。把它放在一个答案中,我会很高兴接受它..顺便说一句,为什么它反过来不起作用?
标签: c++ visual-studio-2010 matlab mex