编译C++ MEX MATLAB API时出现__imp_get_function_ptr未解析外部符号错误
报错原因与解决方法
该LNK2019报错的核心原因是:你此前的VS项目配置仅适配C版本Mex API,而R2021a自带的phonebook.cpp示例使用的是Matlab C++ Data API,额外依赖C++ API专属的库文件,未正确添加就会出现符号未找到的问题。
具体修复步骤如下:
- 确认VS项目的库目录已添加R2021a对应路径:路径格式为
$MATLAB_ROOT\extern\lib\win64\microsoft,其中$MATLAB_ROOT替换为你本地R2021a的安装根目录,默认路径为C:\Program Files\MATLAB\R2021a。 - 打开项目属性页,依次进入「链接器-输入-附加依赖项」,在原有
libmex.lib、libmx.lib的基础上,新增两个C++ API专属库:libMatlabDataArray.lib、libMatlabEngine.lib。 - 确认项目编译目标平台为x64,Matlab R2021a仅提供64位版本的库文件,32位编译会无法匹配符号。
- 打开项目属性页,依次进入「C/C++-语言-C语言标准」,选择
ISO C++17 标准 (/std:c++17)或更高版本,Matlab C Data API要求C++17及以上标准支持。 - 检查所有引用的Matlab库路径都对应R2021a版本,不要混用其他版本Matlab的库文件,避免版本不匹配导致的符号缺失。
内容的提问来源于stack exchange,提问作者DuuMushishi
相关产品推荐
相关产品推荐

