2

我正在尝试使用 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)它编译得很好,但是对于和 的未解析符号会导致两个 LNK2001 错误CryptoPP::ThreadUserTimer::TicksPerSecond(void)

这里的想法用完了 - 由于我工作的地方的神秘规则,我无法粘贴代码,但是我已经包含了dll.h, cryptlib.h, osrng.h, aes.h, sha.h, hex.h,integer.h和.modes.hpwdbased.h

我错过了一些非常明显的东西吗?

4

2 回答 2

2

我也遇到了这个问题,看起来那个类没有被导出。添加CRYPTOPP_DLLThreadUserTimerin的声明hrtimer.h将修复它。

于 2013-12-10T10:40:20.940 回答
1

user1520427为您提供了答案。您需要添加CRYPTOPP_DLL一些类和函数。

PKCS5_PBKDF2_HMAC<SHA256>是仅标头实现,因此不需要 CRYPTOPP_DLL. 请参阅pwdbased.h

但是,ThreadUserTimer不仅仅是标题,因此您需要修改hrtimer.h

老的:

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

新的:

00042 class CRYPTOPP_DLL ThreadUserTimer : public TimerBase
00043 {
00044     ...
00048 };
于 2014-01-10T04:28:03.440 回答