暗号化について – プログラミング – Home

通知
すべてクリア

[解決済] 暗号化について


yuki
 yuki
(@yuki)
ゲスト
結合: 23年前
投稿: 39
Topic starter  

VC初心者です。

暗号化のアプリを作成しようとしていますが、
よく、わかりません。
初歩的な質問ですが、教えて下さい。

以下のように、CryptAcquireContext関数をまず、呼ぼうとしていますが、
エラーになってしまいます。

#include <wincrypt.h>

CCryptTest::CCryptTest()
{
HCRYPTPROV hProv; ←この部分

CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0);
}

『error C2065: 'HCRYPTPROV' : 定義されていない識別子です。』
のエラーになってしまいます。

初歩的で、申し訳ありませんが、誰か教えて下さい。
宜しくお願いします。


引用未解決
トピックタグ
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

とりあえず wincrypt.h を見たところ、あらかじめ
#define _WIN32_WINNT 0x0400
が必要なようです。

VC++ の全ヘッダの振る舞いを変えうる重大な定義なので、
プロジェクトの設定→プリプロセッサの定義
で、ソースコードの外側で定義しておくのが吉。


返信引用
yuki
 yuki
(@yuki)
ゲスト
結合: 23年前
投稿: 39
Topic starter  

tetrapodさん、アドバイスありがとうございます。

早速、プリプロセッサの定義に_WIN32_WINNT=0x0400を設定して
みましたが、以下のエラーになってしまいます。
また、ソースコードに#define _WIN32_WINNT 0x0400をインクルードの前に
入れても同じでした。

エラーの内容は、以下のとおりです。

wincrypt.h(24) : error C2146: 構文エラー : ';' が、識別子 'HRESULT' の前に必要です。

また、教えて頂けますでしょうか?
宜しくお願いします。


返信引用
EEE
 EEE
(@EEE)
ゲスト
結合: 22年前
投稿: 6
 

>wincrypt.h(24) : error C2146: 構文エラー : ';' が、識別子 'HRESULT' の前に必要で
す。

日本語読めませんか?


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

簡単なコンソールアプリケーションでは当該エラーは出ませんでした。
MFC 使用の有無でも話は違うでしょう。

ま、とりあえず VC++ 6 の include ディレクトリを grep するに、
wincrypt.h の前に winnt.h を #include すると直りそうな気がします。
_WIN32_WINNT はプリプロセッサの定義のほうに移しましょう。


返信引用
yuki
 yuki
(@yuki)
ゲスト
結合: 23年前
投稿: 39
Topic starter  

tetrapodさん、再度のアドバイスありがとうございます。

再度、MFCを使用するコンソールアプリケーションを新規にプロジェクトを
作成し直してみました。
一応、エラーはでなくなりました。

どうも、ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました