我在 64 位机器上的 Windows 8.1 上使用 Visual Studios 2012。我在为 c++ 编译以下代码时遇到问题,出现上述错误:
#include <windows.h>
#include <wincrypt.h>
void MD5Init(MD5Context *ctx)
{
CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, &ctx->hHash);
}
但是,这似乎是这种调用方式(这是一个具有相同调用并给我相同错误的方法)。VS 建议了一些可能的修复,我会尝试,但有谁知道为什么会发生这种行为以及如何避免它?
建议的修复是:
错误 C2664:“CryptCreateHash”:无法将参数 5 从“unsigned long *”转换为“HCRYPTHASH *”指向的类型不相关;
转换需要 reinterpret_cast、C-style cast 或 function-style cast
谢谢,
奥丹
编辑: 32 位编译不会发生这种情况,所以我想这就是我读过的示例所做的。我将更新建议的修复是否适用于 64 位编译。