0

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 ビット コンパイルで機能するかどうかを更新します。

4

0 に答える 0