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 スタイルのキャスト、または関数スタイルのキャストが必要です
ありがとう、
アオダーン
編集: 32 ビット コンパイルでは発生しないため、私が読んだ例はそのように行われたと思います。提案された修正が 64 ビット コンパイルで機能するかどうかを更新します。