我正在使用Qt,我正嘗試使用Botan。一切似乎順利,但是當我去:與Qt使用Botan時遇到問題
Botan::BigInt myInt;
在我的構造函數,它工作正常,但另一方面,如果我去:
Botan::AutoSeeded_RNG rng;
它拋出未定義的錯誤:
C:\Users\Stevie\Desktop\asfsdf-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK__Debug\debug\mainwindow.o:-1: In function `AutoSeeded_RNG':
C:\Users\Stevie\Desktop\asfsdf-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK__Debug\..\..\..\..\botan\include\botan\auto_rng.h:40: error: undefined reference to `_imp___ZN5Botan23Global_State_Management12global_stateEv'
C:\Users\Stevie\Desktop\asfsdf-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK__Debug\..\..\..\..\botan\include\botan\auto_rng.h:40: error: undefined reference to `_imp___ZN5Botan13Library_State10global_rngEv'
:-1: error: collect2: ld returned 1 exit status
我不知道爲什麼它會以一個BIGINT但不是AutoSeeded_RNG工作,但這裏是我的具體步驟:
在 「SRC /庫/的3rdParty /牡丹/」 編譯包括在Qt Creator的源牡丹源
我使用Windows安裝(1.10)從their website安裝牡丹。
我把libBotan.a,libBotand.a,botan.dll和Botand.dll放到了我安裝Botan(C:\ botan)的位置。我覆蓋了那些已經存在的文件。
我然後創建了一個新Qt工程,和pro文件的內部我添加下列行:
INCLUDEPATH + = 「C:/牡丹/包括」
LIBS + =「C :/botan/libBotan.a」接下來,我進入我的 「mainwindow.cpp」,並添加:
#include <botan/botan.h>
成功編譯成功。
我現在還要補充到我的構造函數:
Botan::AutoSeeded_RNG rng;
現在上面的錯誤拋出,而不能跑了。如果我將「AutoSeeded_RNG」替換爲「BigInt」,那麼它編譯完美。
感謝您的幫助,Hetelek。
更改我的LIBS定義方式並沒有幫助:( – hetelek 2012-08-17 15:08:13
)當您添加BigInt時,您是否也使用它?例如,嘗試添加兩個BigInt,否則編譯器可能會優化它。我也很好奇,如果你用Botan和你的程序使用相同的編譯器。 – Mehrwolf 2012-08-17 16:34:42
是的,我確實使用它並且沒有問題。 – hetelek 2012-08-17 20:15:04