【问题标题】:Crypto++ multibyte/unicode issueCrypto++ 多字节/unicode 问题
【发布时间】:2023-03-17 08:09:01
【问题描述】:

我在我的项目中使用 Crypto++ 库,但我收到以下消息:

内存完整性检查失败。这可能是调试造成的 断点或 DLL 重定位。

并且 Visual Leak Detector 检测到大量内存泄漏,但我会正确地调用 dctor。

我已经使用 msvc-2010 (MultiByte) 构建了 Crypto,并且正在使用来自另一个库 (UNICODE) 的 cryptopp

这很危险吗?

【问题讨论】:

    标签: c++ crypt crypto++ visual-leak-detector


    【解决方案1】:

    内存完整性检查失败。

    听起来您正在使用可用于 Crypto++ 网站的预构建 FIPS 库之一。 (这是我最常看到的地方)。

    如果是这样,您需要使用与构建 DLL 相同的版本来开发您的程序。那可能是 Visual Studio 6 或 Visual Studio 2002/2003 左右。如果您尝试将它与 Visual Studio 2010 ro 2012 一起使用,您将遇到很多内存问题。

    Visual Leak Detector 检测到大量内存泄漏,但我会正确调用 dctor。

    忽略这些。微软在这该死的东西中存在一个未修复的错误,可以追溯到 Visual Studio 6 天。如果您搜索 Microsoft Connect,您可以找到错误报告。它在 Crypto++ wiki 的 Leak 页面上进行了讨论。

    我已经使用 msvc-2010 (MultiByte) 构建了 Crypto,我正在使用来自另一个库 (UNICODE) 的 cryptopp

    其他库也必须使用 Visual Studio 2010 构建。 UNICODE 没问题,但您需要处理 MBCS/UNICODE 转换。请参阅 Crypto++ wiki 上的 Character Set Considerations

    【讨论】: