编译 C++ MEX MATLAB API 时无法解析的外部符号符号__imp_get_function_ptr

Unresolved external symbol symbol __imp_get_function_ptr when compiling a C++ MEX MATLAB API

提问人:DuuMushishi 提问时间:9/20/2021 更新时间:9/20/2021 访问量:605

问:

我正在尝试在 VS2017 IDE 中运行 Matlab R2021a 的 CPP Mex 存储库中的示例代码之一。具体来说,我正在运行电话簿.cpp。我之前在按照本指南使用 C Mex API 在 VS2017 中编译其他解决方案时没有遇到任何问题。但是,我在编译电话簿.cpp时收到以下消息:

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol __imp_get_function_ptr referenced in function "int (__cdecl*__cdecl matlab::data::detail::resolveFunction<int (__cdecl*)(int,int,bool *)>(enum matlab::data::detail::FunctionType))(int,int,bool *)" (??$resolveFunction@P6AHHHPEA_N@Z@detail@data@matlab@@YAP6AHHHPEA_N@ZW4FunctionType@012@@Z) test    C:\Users\DuuMushishi\Documents\test.obj 1

我不确定需要添加什么库,或者错误是否是由于其他原因造成的

C++ MATLAB visual-studio-2017 mex 未解析外部

评论

0赞 moi 9/20/2021
看这里.- stackoverflow.com/questions/12573816/...
0赞 moi 9/20/2021
这回答了你的问题吗?什么是未定义的引用/未解析的外部符号错误,如何解决?
0赞 Cris Luengo 9/20/2021
您确实应该使用该命令来编译 MEX 文件。您链接的指南遗漏了很多东西,包括定义一些预处理器宏,这些宏指定要使用的 API 版本。默认 API 版本不是最佳选择。如果要“手动”生成 MEX 文件,请使用开关运行,以便查看它如何调用编译器和链接器。这应该可以很好地指示您还需要什么。mexmex-v

答:

2赞 DuuMushishi 9/20/2021 #1

我解决了这个问题。事实证明,我必须在其他依赖项中包含“libMatlabDataArray.lib”(在我的情况下,位于 C:\Program Files\MATLAB\R2021a\extern\lib\win64\microsoft)