【问题标题】:Cryptopp in multi-threaded DLL, VS2010多线程 DLL 中的 Cryptopp,VS2010
【发布时间】:2014-01-10 12:28:03
【问题描述】:

我正在尝试使用 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.hcryptlib.hosrng.haes.hsha.hhex.hinteger.hmodes.hpwdbased.h

我是否遗漏了一些非常明显的东西?

【问题讨论】:

  • 你解决过这个问题吗?我也有同样的问题。

标签: c++ visual-studio-2010 crypto++


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    PKCS5_PBKDF2_HMAC<SHA256> 是仅头部实现,因此不需要CRYPTOPP_DLL。见pwdbased.h

    但是ThreadUserTimer只是不是 header,所以你需要修改hrtimer.h:

    旧:

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

    新:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多