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