MATLAB mex编译
参考:升级 MEX 文件以使用 64 位 API
1. * 使用 32 位 API 进行编译。例如,要编译 `myMexFile.c`,请键入:
mex -compatibleArrayDims myMexFile.c
* 每次重构后进行测试 - 请参阅[在每个重构迭代后进行测试、调试并解决存在的差异](https://ww2.mathworks.cn/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html#bsgpkjp-8)。
2. 使用 64 位 API 进行编译。要编译 `myMexFile.c`,请键入:
mex myMexFile.c
Error 1
error C3861: “max”: 找不到标识符
error C3861: “min”: 找不到标识符
解决:
在文件前添加 #include <minmax.h>
参考:
error C3861: “max”
混合编程MATLAB引擎的一些错误(error LNK2019: 无法解析的外部符号)
Error 2
无法解析的外部符号 "int * xform_scale_table" (?xform_scale_table@@3PAHA),该符号在函数 mexFunction 中被引用
分析
- 64 bit MATLAB and 32 bit Visual Studio不匹配导致
- .cpp没有放到同一文件夹下或者只有声明没有定义
- 部分文件没有被添加到项目里
参考:
matlab的mex编译与mxCreateNumericArray
MEX文件调试—MATLAB调用C++程序—混合编程
matlab mex function
Error 3
fatal error C1189: #error: <hash_set> is
deprecated and will be REMOVED. Please use <unordered_set>. You can define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS to acknowledge that
you have received this warning.
解决:
参考:
How to fix hash_map is deprecated and will be REMOVED