私はしばらくの間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ヘッダーで定義されているため、それ自体で機能しますが、2番目の行はリンク時に失敗します):
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