2011-12-16 91 views
0

我需要使用Win32 Crypto API中的某些功能,例如CryptQueryObject。問題是我還需要用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的。 – 2011-12-17 13:13:38

回答

2

您需要動態鏈接到crypt32.dll。您可以使用Win32 API函數LoadLibrary + GetProcAddress或在編譯時使用import library在運行時間 上執行此操作。

對於運行時綁定,MSDN有一個good example

編輯:如果您需要一些API函數不在MinGW的頭文件中,請進入導入庫。

+0

另一個很好的例子是在文件/crypto/rand/rand_win.c中的openssl庫中 – 2011-12-16 22:10:53

0

我有同樣的問題。下載並安裝Windows SDK

現在調用此鏈接:

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