【发布时间】:2016-10-19 11:34:31
【问题描述】:
我正在努力链接到在另一个 Visual C++ 项目中使用 CMake 创建的静态库。我收到库中所有符号的 LNK2001 未解决的符号错误。忘记与图书馆链接?我真的不认为我有,因为我已将其指定为绝对路径,并验证如果我更改名称,我会收到一个错误,它找不到库 - 所以它肯定在查看它。
我使用 DUMPBIN 查看符号名称,它们似乎与 VC++ 正在寻找的不同,例如
(在静态库中)
??0Matrix@NEWMAT@@QAE@HH@Z (public: __thiscall NEWMAT::Matrix::Matrix(int,int))
(未解析的符号)
public: __cdecl NEWMAT::Matrix::Matrix(int,int)" (??0Matrix@NEWMAT@@QEAA@HH@Z)
注意装饰中的 QAE 与 QEAA,库也有 __thiscall 而编译器正在寻找 __cdecl
看起来调用约定可能是问题,但为什么会有所不同,是否有编译器开关使其保持一致?
我已经检查了项目属性并尝试使所有编译器选项都相同,但无济于事。不幸的是,我不是 VC++ 专家,所以这可能很简单,但是任何人都可以提供帮助吗?
【问题讨论】:
-
欢迎来到 Stack Overflow。我将看看您使用库部署的头文件和构建库所使用的头文件的区别。
标签: c++ visual-c++ cmake