我正在尝试使用VS 2010在XPSP3上使用Cryptopp 5.6.2。新的...
我需要使用多线程DLL,因为这是我的应用程序使用的,所以我将Crypto ++项目属性中的所有引用从/MT[d]
更改为/MD[d]
。所有Crypto ++似乎都很好。
然而,所有人都对我的C ++控制台应用程序不满意 - 我有标准的GetNewAndDeleteForCryptoPP
并且似乎被称为OK(删除它并且cryptopp给出错误,包含它并且cryptopp不会打印警告)
在我添加第PKCS5_PBKDF2_HMAC<SHA256>
行之前,一切似乎都很好。它编译得很好但会导致CryptoPP::ThreadUserTimer::GetCurrentTimerValue(void)
和CryptoPP::ThreadUserTimer::TicksPerSecond(void)
的未解析符号出现两个LNK2001错误
dll.h
。
这里没有想法 - 我无法在我工作的地方粘贴代码,但我已经包含了cryptlib.h
,osrng.h
,aes.h
,{{ 1}},sha.h
,hex.h
,integer.h
,modes.h
和pwdbased.h
。
我错过了一些令人眼花缭乱的事情吗?
答案 0 :(得分:2)
我也遇到过这个问题,看起来这个类似乎没有被导出。将CRYPTOPP_DLL
添加到ThreadUserTimer
中的hrtimer.h
声明即可解决问题。
答案 1 :(得分:1)
user1520427为您提供了答案。您需要为一些类和函数添加CRYPTOPP_DLL
。
PKCS5_PBKDF2_HMAC<SHA256>
是仅限标头的实现,因此不需要CRYPTOPP_DLL
。请参阅pwdbased.h。
但是,ThreadUserTimer
仅不是标头,因此您需要修改hrtimer.h
:
OLD:
00042 class ThreadUserTimer : public TimerBase
00043 {
00044 ...
00048 };
NEW:
00042 class CRYPTOPP_DLL ThreadUserTimer : public TimerBase
00043 {
00044 ...
00048 };