導航:首頁 > 源碼編譯 > mingw編譯庫

mingw編譯庫

發布時間:2024-09-28 07:19:13

1. minGW使用方法

基本用法在後面給你加上了
MinGW是指只用自由軟體來生成純粹的Win32可執行文件的編譯環境,它是Minimalist GNU on Windows的略稱。詳情請參考<http://www.mingw.org>。
這里的「純粹」是指「使用msvcrt.dll的應用程序」。無法使用MFC (Microsoft Foundation Classes)。
MinGW:一個可自由使用和自由發布的Windows特定頭文件和使用GNU工具集導入庫的集合,允許你生成本地的Windows程序而不需要第三方C運行時庫。
MinGW,即 Minimalist GNU For Windows。它是一些頭文件和埠庫的集合,該集合允許人們在沒有第三方動態鏈接庫的情況下使用 GCC(GNU Compiler C)產生 Windows32 程序。
在基本層,MinGW 是一組包含文件和埠庫,其功能是允許控制台模式的程序使用微軟的標准C運行時間庫(MSVCRT.DLL),該庫在所有的 NT OS 上有效,在所有的 Windows 95 發行版以上的 Windows OS 有效,使用基本運行時間,你可以使用 GCC 寫控制台模式的符合美國標准化組織(ANSI)程序,可以使用微軟提供的 C 運行時間擴展。該功能是 Windows32 API 不具備的。下一個組成部分是 w32api 包,它是一組可以使用 Windows32 API 的包含文件和埠庫。與基本運行時間相結合,就可以有充分的權利既使用 CRT(C Runtime)又使用 Windows32 API 功能。
MinGW 官方網站為 http://www.mingw.org
實際上 MinGW 並不是一個 C/C++ 編譯器,而是一套 GNU 工具集合。除開 GCC (GNU 編譯器集合) 以外,MinGW 還包含有一些其他的 GNU 程序開發工具 (比如 gawk bison 等等)。
開發 MinGW 是為了那些不喜歡工作在 Linux(FreeBSD) 操作系統而留在 Windows 的人提供一套符合 GNU 的 GNU 工作環境。
(此前的 cygwin 雖然也是 GNU 的 Windows 移植,但是 cygwin 是有版權的,而不是 GNU。)
所以,使用 MinGW 我們就可以像在 Linux 下一樣使用 GNU 程序開發工具。
GCC 就是 MinGW 的核心所在,GCC 是一套支持眾多計算機程序語言的編譯系統,而且在語言標準的實現上是最接近於標準的。並且 GCC 幾乎可以移植到目前所有可用的計算機平台。(我的電腦上就還裝有 DevKitPro,裡麵包含 GCC 的 ARM(for GBA/DS/GP32) 和 MIPS(for PSP) 版本。)
GCC 本身不像 VC 那樣擁有 IDE 界面(在 Windows 上也存在 Dev C++ 之類的支持 MinGW 編譯器的 IDE)。源代碼編輯你可以選用任何你喜歡的文本編輯器(據說微軟的開發人員包括 VC 的開發都不用 VC 所帶的 IDE 編輯器,而是選用 GNU 的 VIM 編輯器)。然後使用 make 等工具來進行軟體項目的編譯、鏈接、打包乃至發布。而像 cvs(svn) 源代碼版本控制工具可以讓世界上任何一個角落的人都可以參與到軟體項目中來。
關於 MFC,微軟基礎庫類,這個隨 VC++ 攜帶的一個源代碼公開的開發包,和其他 Windows 程序開發包是一樣的。如果有 VC++ 的授權,你完全可以使用 MFC 的源代碼,也就是你使用 GCC 來編譯 MFC 程序是完全可以的。
當然,GNU 下也很多 Windows 程序開發包,甚至有一些是支持跨平台使用的。不僅僅可以直接把源代碼編譯為 Windows 程序,也可以不經修改編譯為其他操作系統的圖形程序。
不過 GNU 下,最流行的圖形界面開發庫是 GTK+。GTK+ 也能很好的運行在 Windows 平台(比如 GIMP 和 Gaim)。
總體說來,使用 MinGW 就是 GNU。

基本用法:
在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

閱讀全文

與mingw編譯庫相關的資料

熱點內容
必修一數學PDF 瀏覽:775
javascriptphpjsp 瀏覽:811
深圳一程序員退房完整版 瀏覽:294
後台管理app哪個好 瀏覽:766
加密鎖無模塊什麼意思 瀏覽:22
加密國度英文 瀏覽:20
科沃斯用了app怎麼使用按鍵 瀏覽:663
爬蟲編譯器價格 瀏覽:885
支付寶視頻app會員自動扣費怎麼關 瀏覽:230
單片機和wifi模塊 瀏覽:725
python倒序二進制代碼 瀏覽:362
廣東程序員離職 瀏覽:586
golang核心編程 瀏覽:170
中小學計演算法則 瀏覽:85
無職轉生哪個app能看 瀏覽:580
夏夢迪在哪個app 瀏覽:107
c編譯軟體cl 瀏覽:933
逗比的程序員頭像 瀏覽:984
單片機原理作業答案 瀏覽:230
文件夾的東西怎麼能轉成文檔 瀏覽:968