2011-12-16 10 views
0

CryptQueryObjectなど、Win32 Crypto APIの関数を使用する必要があります。問題は、私もMingWでプログラムをコンパイルする必要があり、含まれている暗号ライブラリには、前述のCryptQueryObjectのような必要な機能がいくつか欠けていることです。私は関連するCヘッダ定義をコピーしようとしました。プログラムがコンパイルされるようになりましたが、リンク時に未定義の参照エラーで失敗します(mingwのcrypt32.dllはいくつかの関数を実装していないので)。私はC:\ Windows \ System32 \ crypt32.dllに対してリンクを試みましたが、それでもリンクエラーが返されます。MingWにWin32 Crypto APIの一部の機能がありません

mingwでCrypto API全体を使用する方法はありますか?

+1

[全体のWindows SDK](http://www.microsoft.com/download/en/details.aspx?id=8279)をダウンロードしていないのはなぜ?確かにMinGWのものを使うことができます。 –

答えて

2

crypt32.dllに動的にリンクする必要があります。 Win32 API関数LoadLibrary + GetProcAddressを使用して、またはimport libraryを使用してコンパイル時に実行時に を実行することができます。

実行時バインディングの場合、MSDNにはgood exampleがあります。

編集: MinGWのヘッダーにはないAPI関数が必要な場合は、インポートライブラリを参照してください。

+0

もう一つの良い例は、ファイル/crypto/rand/rand_win.cのopensslライブラリです –

0

私は同じ問題を抱えていました。 Windows SDKをダウンロードしてインストールします。

は今リンカを呼び出す:

gcc -L"C:\Program Files (x86)\Windows Kits\10\Lib\10.0.14393.0\um\arm" -o "Test" ./main.o -lcrypt32 
関連する問題