我是比較新的C++,我主要用於在Visual Studio 2013環境下工作。我需要在一個項目中使用這個庫,我的工作: https://github.com/s3rvac/cpp-bencoding克++鏈接的靜態庫錯誤
我的第一個問題是:它的問題,如果我建立在Visual Studio或GCC(MinGW的-W64)的圖書館嗎?
無論如何,我建立了它使用GCC(4.9.2),因爲筆者在他的GitHub上的指示這樣做的。我沒有錯誤,我製作了一個名爲的庫libbencoding.a
現在我想將這個lib文件鏈接到我自己的項目。這是我被卡住了。所以我創建了一個簡單的hello世界程序(main.cpp)。 libbencoding.a的位置是在文件夾C:\ ... \ CPP-bencoding \ build中的\ src
g++ main.cpp -L "C:\...\cpp-bencoding\build\src" -l libbencoding -o foo.exe -std=c++11
然而,這產生錯誤信息:
C:/Program Files (x86)/mingw-w64/i686-4.9.2-posix-dwarf-rt_v4-rev2/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: cannot
find -llibbencoding
collect2.exe: error: ld returned 1 exit status
我真的在這裏感謝一些幫助。
在此先感謝!
'-lencoding',不'lib' – Mat
'其實-lbencoding'。 – immibis
如果我錯了,那麼人們會糾正我,但是對於你的問題,如果它對圖書館編譯的編譯器有影響,是的。因爲C++沒有一個穩定和標準的ABI,例如如果你的庫的源代碼用方法欄定義了類Foo,g ++可能會把名稱class__foo__method__bar放在庫二進制文件中,而當進行鏈接時,可能編譯器會查找method__bar__of__class__foo –