2011-08-10 49 views
1

我想創建一個使用Crypto ++(帶有Code :: Blocks)的C++程序,但不斷陷入同樣的​​問題。我正在使用此代碼的簡化版本:http://andreyvitdev.blogspot.com/2005/10/crypto-usage-sample.html ,但我無法獲得它的編譯。加密++代碼::塊未定義的引用特徵

#include "cryptopp/blowfish.h" 
#include "cryptopp/osrng.h" 

using namespace CryptoPP; 

int main (int argc, char** argv) { 

    byte key[Blowfish::DEFAULT_KEYLENGTH], 
      iv[Blowfish::BLOCKSIZE]; 

    AutoSeededRandomPool rng (true); 
    rng.GenerateBlock(key, sizeof (key)); 
    rng.GenerateBlock(iv, sizeof (iv)); 

} 

我得到了多個錯誤,首先是:「C:\用戶\ Utilisateur \程序\ C++ \代碼塊\ Crytp測試儀\ main.cpp中| 13 |未定義的參考`CryptoPP :: RandomNumberGenerator :: GenerateBlock(無符號字符*,無符號整數)'「

我錯過了什麼嗎?在不同的網站上有很多關於庫必須導入的參考資料,但是我無法弄清楚它們在crypto ++文件夾中的位置:http://www.cryptopp.com/#download

+0

看起來你忘了鏈接圖書館。檢查如何指定庫鏈接到Code :: Blocks並添加'cryptopp'。 – pmr

+0

+1,用於包含最小的完整樣本程序。有關這一點很重要的更多信息,請參閱http://sscce.org/。 –

+0

好的,我會環視四周,但是在哪裏可以找到cryptopp庫? – Kalessar

回答

3

「未定義的引用」是一個鏈接器錯誤 - 或者您沒有構建Crypto ++庫,或者沒有告訴鏈接器鏈接到它。

儘管如此,如果使用MinGW(帶有代碼塊的最常見編譯器)構建,我並不積極。微軟編譯器(與Visual Studio一起)是免費的;並使用Code :: Blocks和Crypto ++進行明確測試。

+0

我正在使用帶有代碼塊的GNU GCC編譯器,我應該選擇另一個嗎? – Kalessar

+0

@Kalessar:GCC不能在Windows上運行。 MinGW(包含GCC的(壞)端口到Windows)或者在Cygwin中運行GCC。對於UNIX平臺,GCC是一個很好的編譯器,但在Windows上MinGW真的很臭。 (例如,它不能構建本機x64二進制文件) –