由于某些原因,我必须在Visual Studio环境下编译我的MEX文件。有很多教程,我的MEX文件工作正常。但是,有一些MEX选项,例如-largeArrayDims
选项中的mex
,我不知道在VS环境下何处打开。有人可以提供帮助吗?
答案 0 :(得分:2)
-largeArrayDims
选项是在MATLAB中切换到mex
命令,仅指示不定义MX_COMPAT_32
。因此,在Visual Studio中,您不必执行任何操作,因为默认情况下未定义此操作。如果您想要相反的行为(-compatibleArrayDims
),请在预处理器部分中定义MX_COMPAT_32
。来自tmwtypes.h:
<强> tmwtypes.h 强>
#ifdef MX_COMPAT_32
typedef int mwSize;
typedef int mwIndex;
typedef int mwSignedIndex;
#else
typedef size_t mwSize; /* unsigned pointer-width integer */
typedef size_t mwIndex; /* unsigned pointer-width integer */
typedef ptrdiff_t mwSignedIndex; /* a signed pointer-width integer */
#endif
通常,使用属性表来设置构建MEX文件的所有必要设置(库依赖项,标题,MEX文件扩展名等)很方便。可以找到一个自动为32位或64位MATLAB工作的单个属性表at GitHub。
在Property Manager中将属性表添加到MEX项目的每个构建配置中(右键单击Debug | x64
等配置,然后选择“添加现有属性表”。请参阅this post for detailed instructions。
一些补充说明:
/EXPORT:mexFunction
而不是.def文件。使用单个导出函数,这更加简单。// prototype the break handling functions in libut (C library)
extern "C" bool utIsInterruptPending();
extern "C" void utSetInterruptPending(bool);