C++调用matlab生成的dll时出现编译错误。相应的头文件,库文件都加载,可是还是出现这些错误

1>------ 已启动生成: 项目: LoadAndFFT, 配置: Debug Win32 ------
1>生成启动时间为 2015/7/14 14:55:22。
1>InitializeBuildStatus:
1> 正在对“Debug\LoadAndFFT.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1> 所有输出均为最新。
1>LoadAndFFT.obj : error LNK2019: 无法解析的外部符号 _msetInitialize,该符号在函数 _main 中被引用
1>LoadAndFFT.obj : error LNK2019: 无法解析的外部符号 _mclGetMatrix_proxy,该符号在函数 "public: __thiscall mwArray::mwArray(unsigned int,unsigned int,enum mxClassID,enum mxComplexity)" (??0mwArray@@QAE@IIW4mxClassID@@W4mxComplexity@@@Z) 中被引用
1>LoadAndFFT.obj : error LNK2019: 无法解析的外部符号 _mclcppGetLastError_proxy,该符号在函数 "public: static void __cdecl mwException::raise_error(void)" (?raise_error@mwException@@SAXXZ) 中被引用
1>LoadAndFFT.obj : error LNK2019: 无法解析的外部符号 _mclcppCreateError_proxy,该符号在函数 "public: __thiscall mwException::mwException(void)" (??0mwException@@QAE@XZ) 中被引用
1>LoadAndFFT.obj : error LNK2019: 无法解析的外部符号 _ref_count_obj_addref_proxy,该符号在函数 "public: __thiscall mwException::mwException(class mwException const &)" (??0mwException@@QAE@ABV0@@Z) 中被引用
1>LoadAndFFT.obj : error LNK2019: 无法解析的外部符号 _ref_count_obj_release_proxy,该符号在函数 "public: virtual __thiscall mwException::~mwException(void)" (??1mwException@@UAE@XZ) 中被引用
1>LoadAndFFT.obj : error LNK2019: 无法解析的外部符号 _error_info_get_message_proxy,该符号在函数 "public: virtual char const * __thiscall mwException::what(void)const " (?what@mwException@@UBEPBDXZ) 中被引用
1>LoadAndFFT.obj : error LNK2019: 无法解析的外部符号 _array_ref_set_numeric_mxDouble_proxy,该符号在函数 "public: void __thiscall mwArray::SetData(double *,unsigned int)" (?SetData@mwArray@@QAEXPANI@Z) 中被引用
1>C:\Users\Administrator\Desktop\hun_Mset\SS_demo\Debug\LoadAndFFT.exe : fatal error LNK1120: 8 个无法解析的外部命令
1>
1>生成失败。
1>
1>已用时间 00:00:00.62
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

在C++工程的属性--链接器--输入中附加依赖项中填入你要用的库xxx.lib,保证xxx.h、xxx.lib和xxx.dll在一起,同时在C:\Users\Administrator\Desktop\hun_Mset\SS_demo\Debug\中也放入xxx.lib和xxx.dll追问

这些操作都做了,还是不对。这些无法解析的外部符号都是在调用matlab生成的库文件或者头文件时出错的。。。

追答

你去查查matlab动态库的函数导出格式对不对,然后你可以用notepad这个软件以文本打开动态库,看有没有你的所调用的函数名。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-16
Matlab64位也要对应编译器的64位,32位对应32位,链接库也一样。
相似回答