2013-10-17 77 views
2

我試圖使用VS 2010這個新的XPSP3使用Cryptopp 5.6.2 ...Cryptopp在多線程DLL,VS2010

我需要使用MULT線程的DLL因爲這是我的應用程序使用,因此我將Crypto ++項目屬性中的所有引用從/MT[d]更改爲/MD[d]。所有Crypto ++似乎都可以構建。然而,所有不滿意我的C++控制檯應用程序 - 我有標準GetNewAndDeleteForCryptoPP,這似乎被稱爲確定(刪除它,並cryptopp提供了一個錯誤,包括它和cryptopp不打印警告)。

一切似乎很好,直到我添加在行PKCS5_PBKDF2_HMAC<SHA256>。它編譯得很好,但導致兩個LNK2001錯誤未解決的符號爲CryptoPP::ThreadUserTimer::GetCurrentTimerValue(void)CryptoPP::ThreadUserTimer::TicksPerSecond(void)

運行的想法在這裏 - 我不能粘貼代碼由於在我工作的地方神祕的規則,但我已經包括dll.hcryptlib.hosrng.haes.hsha.hhex.hinteger.hmodes.h和​​。

我錯過了一些盲目明顯的東西嗎?

+0

你有沒有解決這個問題?我有同樣的問題。 – user1520427

回答

2

我也有這個問題,它看起來不像那個類正在導出。在hrtimer.hThreadUserTimer聲明中添加CRYPTOPP_DLL將會修復它。

0

user1520427爲您提供了答案。您需要爲幾個類和功能添加CRYPTOPP_DLL

PKCS5_PBKDF2_HMAC<SHA256>是一個頭只有實現,所以它不需要CRYPTOPP_DLL。請參閱pwdbased.h

然而,ThreadUserTimer頭而已,所以您需要修改hrtimer.h

OLD:

00042 class ThreadUserTimer : public TimerBase 
00043 { 
00044 ... 
00048 }; 

新:

00042 class CRYPTOPP_DLL ThreadUserTimer : public TimerBase 
00043 { 
00044  ... 
00048 };