MinGW 是一組包含文件和端口庫,其功能是允許控制臺模式的程序使用微軟的標準C運行時間庫(MSVCRT.DLL),該庫在所有的 NT OS 上有效,在所有的 Windows 95 發行版以上的 Windows OS 有效,使用基本運行時間,你可以使用 GCC 寫控制臺模式的符合美國標準化組織(ANSI)程序,可以使用微軟提供的 C 運行時間擴展。該功能是 Windows32 API 不具備的。下一個組成部分是 w32api 包,它是一組可以使用 Windows32 API 的包含文件和端口庫。與基本運行時間相結合,就可以有充分的權利既使用 CRT(C Runtime)又使用 Windows32 API 功能。
MinGW安裝圖文教程:
下載之后安裝一下(注意:這個安裝并沒有安裝MinGW)
安裝玩下載程序后,打開。
點擊Continue進行安裝
下載安裝完之后設置環境變量
設置環境變量。
a. 鼠標右擊桌面“計算機”(WindowsXp是“我的電腦”)->“屬性”
b. WindowsXP時,在新彈出的屬性窗口,選擇“高級”->“環境變量”。
Windows7時,在新彈出的屬性窗口,選擇左側的“高級系統設置”,在新彈出的屬性窗口,選擇“高級”->“環境變量”。
c. 把MinGW安裝目錄的bin目錄的路徑追加到PATH里,然后確定。
注意:箭頭指的兩個分號一定要加上并且分號一定要在英文輸入模式下輸入
最后在CMD中輸入gcc -v,看看有沒有安裝成功,如果出現一下畫面說明安裝成功
改系統環境變量不是很好, 新增一個用戶Path變量就OK了, 不止一次遇到系統變量被刪除的人突然發現命令提示符N多命令不好使了
基本用法:
在mingw環境中生成和使用dll都是十分方便的。
1.生成dll
gcc(g++) -shared -o test.dll test.c(test.cpp)
通過該命令生成test.dll,將導出test.c中非靜態的函數和相關的類。
(注by asper:該命令行在處理jni涉及的dll時無效)
我使用微軟C++編譯器,cl命令對帶有空格的路徑也是無效的,需要用""括住
2.連接dll到exe中
mingw使用dll的方式和靜態庫.a的方式是一樣的,連接的時候只需要加上-ltest即可,沒有lib前綴的要求。
3.編寫jni調用的dll
有辦法了! 是gcc少了行參數。 如下:
gcc -I%JAVA_HOME%\include -I%JAVA_HOME%\include\win32 -Wl,--add-stdcall-alias -shared -o call.dll call.c
參數:-Wl,--add-stdcall-alias 可以為函數加上標準調用前綴(stdcall @nn)。
這樣編譯出的dll就可以了。都知道win32中dll中的函數要求有標準調用前綴,在JNI中不方便手動處理這個,Sun又沒說清楚這事由編譯器辦。所以搞得我很郁悶。找了大半個月,終于在一個很古老的網頁上找到答案。
基本上和VC的界面差不多 學習C語言用的最多的還是VC++ 6.0