繁体   English   中英

Qt Creator:未解析的外部符号

[英]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(我也用于Qt构建)编译了libgit2,然后将外部库添加到了Qt项目中。 确认包含文件没有问题,但是库未正确链接。 由于libgit2是C库,因此我尝试将该库包括在extern块中(并且也没有exern块),但无济于事:

extern "C" {
    #include  <git2.h>
}

此外,该功能在lib文件:

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选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM