Qt创建者:未解析的外部符号
Qt Creator: Unresolved External Symbol
我已经为Qt:中的一个错误而挣扎了一段时间
mainwindow.obj:-1: error: LNK2019: unresolved external symbol _git_repository_open referenced in function "public: __thiscall MainWindow::MainWindow(class QWidget *)" (??0MainWindow@@QAE@PAVQWidget@@@Z)
这显然是一个链接错误,但我还没能弄清楚是什么原因造成的。这一切都是在Windows上编译的,我的目标库是libgit2。
我使用MVSC2010编译了libgit2(我也在Qt构建中使用它),然后将外部库添加到我的Qt项目中。收录已被确认,但库的链接不正确。由于libgit2是一个C库,我尝试将该库包含在一个extern块中(也没有exen块),但没有成功:
extern "C" {
#include <git2.h>
}
此外,函数是库文件中的:
dumpbin /EXPORTS git2.lib
...
_git_repository_open@8
...
抛出错误的相关行(第一行单独工作,因为它是在git头中定义的,但第二行在链接时失败):
git_repository *repo;
git_repository_open(&repo, "/opt/libgit2-test/.git");
相关的qt.pro文件行:
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libgit2/lib/ -lgit2
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libgit2/lib/ -lgit2d
else:unix: LIBS += -L$$PWD/libgit2/lib/ -lgit2
INCLUDEPATH += $$PWD/libgit2/include
DEPENDPATH += $$PWD/libgit2/include
看起来您遇到了这个问题:
https://github.com/libgit2/libgit2/issues/741
你可以试试这里的建议:
https://github.com/libgit2/libgit2/pull/749#issuecomment-6434565
使用MSVC工具链在Windows上构建时,默认构建使用__stdcall约定。然而,这并没有反映在头文件,所以您必须在自己的文件中使用/Gz编译器选项构建,以便能够成功地与构建的libgit2链接那样。如果这不可能或不可取,请设置-执行初始cmake时,DSTDCALL=OFF选项。
相关文章:
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 未解析的外部符号_MsiLocateComponentW@12.
- 在C++中使用 gRPC 时未解析的外部符号
- LibPrivoxy: 未解析的外部符号 __declspec(dllimport) int __stdcall Sta
- 尝试从 XamlApplication 编译 C++/WinRT 空白应用程序时,我收到未解析的外部符号 winrt_make_*
- 我收到错误LNK2001:未解析的外部符号(C++代码)
- 可视抽象类 c++(错误 LNK 2001:未解析的外部符号)
- 如何摆脱C++中未解析的外部符号"private: static char"错误?
- 当 lib 已添加到其他依赖项时,如何在 VS 中调试未解析的外部符号错误
- 仅在少数方法(静态或共享库)中解析的外部符号
- 未解析的外部符号"__declspec(dllimport)与 Spdlog c++ 库
- 函数 _main (OPENGL C++) 中引用的未解析的外部符号 ________
- 错误LNK2019未解析的外部符号"public: __thiscall SLinkList<char>::SLinkList<char>(void)"
- 使用静态 constexpr 成员的未解析外部符号
- 引入参数化构造函数后显示 LNK 2019 未解析外部符号的代码错误
- Dlib LNK2001未解析的外部符号USER_ERROR__consistent_build_configurati
- 矛盾的未解决的外部符号+未使用的库与VS2017和FFMPEG 4
- 链接器错误:切换到unicode生成给出:未解析的外部符号WinMain
- 类模板上一个特定函数的未解析外部符号
- LNK2001:未解析的外部符号public:static类std::vector