VC初心者です。
暗号化のアプリを作成しようとしていますが、
よく、わかりません。
初歩的な質問ですが、教えて下さい。
以下のように、CryptAcquireContext関数をまず、呼ぼうとしていますが、
エラーになってしまいます。
#include <wincrypt.h>
CCryptTest::CCryptTest()
{
HCRYPTPROV hProv; ←この部分
CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0);
}
『error C2065: 'HCRYPTPROV' : 定義されていない識別子です。』
のエラーになってしまいます。
初歩的で、申し訳ありませんが、誰か教えて下さい。
宜しくお願いします。
とりあえず wincrypt.h を見たところ、あらかじめ
#define _WIN32_WINNT 0x0400
が必要なようです。
VC++ の全ヘッダの振る舞いを変えうる重大な定義なので、
プロジェクトの設定→プリプロセッサの定義
で、ソースコードの外側で定義しておくのが吉。
tetrapodさん、アドバイスありがとうございます。
早速、プリプロセッサの定義に_WIN32_WINNT=0x0400を設定して
みましたが、以下のエラーになってしまいます。
また、ソースコードに#define _WIN32_WINNT 0x0400をインクルードの前に
入れても同じでした。
エラーの内容は、以下のとおりです。
wincrypt.h(24) : error C2146: 構文エラー : ';' が、識別子 'HRESULT' の前に必要です。
また、教えて頂けますでしょうか?
宜しくお願いします。
>wincrypt.h(24) : error C2146: 構文エラー : ';' が、識別子 'HRESULT' の前に必要で
す。
日本語読めませんか?
簡単なコンソールアプリケーションでは当該エラーは出ませんでした。
MFC 使用の有無でも話は違うでしょう。
ま、とりあえず VC++ 6 の include ディレクトリを grep するに、
wincrypt.h の前に winnt.h を #include すると直りそうな気がします。
_WIN32_WINNT はプリプロセッサの定義のほうに移しましょう。
tetrapodさん、再度のアドバイスありがとうございます。
再度、MFCを使用するコンソールアプリケーションを新規にプロジェクトを
作成し直してみました。
一応、エラーはでなくなりました。
どうも、ありがとうございました。