多线程DLL中的Cryptopp,VS2010

Cryptopp in multi-threaded DLL, VS2010

本文关键字:VS2010 Cryptopp 中的 DLL 多线程      更新时间:2023-10-16

>我正在尝试使用VS 2010在XPSP3上使用Cryptopp 5.6.2。新来的...

我需要使用多线程 DLL,因为这是我的应用程序使用的,因此我将 Crypto++ 项目属性中的所有引用从 /MT[d] 更改为 /MD[d] 。所有加密++似乎都可以构建。

但是,我对我的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.hpwdbased.h

我错过了一些显而易见的东西吗?

我也遇到了这个问题,看起来该类没有被导出。在hrtimer.h ThreadUserTimer声明中添加CRYPTOPP_DLL将修复它。

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 };