• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 96  文章 - 255  trackbacks - 0
            <2008年4月>
            303112345
            6789101112
            13141516171819
            20212223242526
            27282930123
            45678910

            E-mail:zbln426@163.com QQ:85132383 長期尋找對戰略游戲感興趣的合作伙伴。

            常用鏈接

            留言簿(21)

            隨筆分類

            隨筆檔案

            SDL相關網站

            我的個人網頁

            我的小游戲

            資源下載

            搜索

            •  

            積分與排名

            • 積分 - 492114
            • 排名 - 38

            最新評論

            閱讀排行榜

            評論排行榜

            作者:龍飛

            3.1:MinGW 是什么?

                    MinGW 提供了一套簡單方便的Windows下的基于GCC 程序開發環境。MinGW 收集了一系列免費的Windows 使用的頭文件和庫文件;同時整合了GNU( http://www.gnu.org/ )的工具集,特別是GNU 程序開發工具,如經典gcc, g++, make等。MinGW是完全免費的自由軟件,它在Windows平臺上模擬了Linux下GCC的開發環境,為C++的跨平臺開發提供了良好基礎支持,為了在Windows下工作的程序員熟悉Linux下的C++工程組織提供了條件。

            3.2:為什么使用MinGW?

                    因為我和很多IT人士一樣,不愿意吊死在$M這棵樹上。且不說開源這個理念的偉大,僅僅就Windows的安全性也已經讓人們很不安心了。如果再深入一點從編寫程序來看,在C++標準尚不成熟時期產生的MFC今天看來基本上就是蓋子大叔憑著個人(或許是$M公司^^)理解所使用的C++方言。在我們期盼C++0x時代到來之前,沒有任何實際行動能比嚴格遵循C++的ISO標準更能表達我們對于C++這個偉大的哲學體系的尊重。從這個角度來說,遵循ISO標準的實現就是好的實現。所以,MinGW不會比VC差,況且,他既是開源軟件家族中的一員,也是*nix平臺下事實標準GCC的翻版。如果有一天我們開始使用Linux平臺了,會因為今天透過MinGW所了解的GCC知識而受益。

            3.3:MinGW 的下載和安裝。

                    MinGW的官方主頁是:
            http://www.mingw.org/
                    你很容易找到下載的鏈接。下載文件是放在sourceforge上的,這也表明MinGW本身也是個在開發中的項目。
            http://sourceforge.net/project/showfiles.php?group_id=2435
                    下載頁面上有很多令人眼花繚亂的文件,不用害怕,因為這才是軟件最真實的一面。當然,這個軟件的提供者為普通使用者也提供了最為簡單的下載和安裝方式。你只需要下載“MinGW自動下載和安裝軟件”(Package: Automated MinGW Installer; Release: MinGW-5.1.3)MinGW-5.1.3.exe就可以根據提示簡單的安裝了。并且,安裝后的MinGW甚至可以通過這個文件來自動升級,非常的人性化。
                    安裝時需要注意以下幾個方面:
            1) 建議選擇Current版本,Previous表示以前的版本;Candidate表示當前正在開發的版本,可能正在測試中,還不是非常穩定。
            2) 在選擇安裝模塊的時候,根據我們的需要,只需要選擇以下三個:MinGW base tools, g++ compiler, MinGW Make。
            3) 安裝路徑請選擇一個容易找到的地方,默認的C:\MinGW 是不錯的選擇。


            3.4:MinGW的簡單使用。

                    打開“命令提示符”(console)窗口,我們可以簡單的把目錄轉到比如 C:\MinGW\bin 這樣的位置去工作。但是這顯然不是一個好的方式,因為這樣一定會把bin里面搞得很混亂。所以,我們在另外一個“干凈”的地方,比如 D:\Project ,把這里設置成MinGW的工程工作區。這樣,我們需要在系統的path里面添加能找到bin下面*.exe文件的路徑,所以做一個批處理文件是最簡單的方法。我的startg++.bat文件這樣寫的:
            @set path=C:\mingw\bin;%PATH%; 
            @echo ---**歡迎使用MinGW(GCC)系統**---
            @echo Update by lf426 ( E-mail: zbln426@
            163.com ) 2007-12-10
            @cmd 

                    然后,你可以建立一個該文件的快捷方式放在桌面上,再為這個快捷方式指定一個漂亮的圖標,nice!
                    接下來,我們需要建立一個cpp文件,用什么來寫cpp呢?

            3.4.1:(插播)Vim ??


                    這又是一個有著傳統的“悠久”歷史,很好很強大的,免費開源的,牛x文本編輯器。官方主頁是:
            http://www.vim.org/
                    不用懷疑,你可以很容易的下載Vim的安裝程序,并且很容易的安裝,不需要任何的“破解”-_-!!
                    因為Vim很好很強大,所以,太多的內容就留給包括我自己在內的大家自己去學了(我的邏輯Orz)。我們這里簡單的只需要了解如下幾點:
            1) 建立一個名為 abc.def 的文本文件,在console窗口下輸入:
            vim abc.def
            你就進入了vim的編輯界面。
            2) 按"i"鍵,就可以輸入文本了。退回到編輯方式,按Esc,再進入插入方式,再按i,就這樣...
            3) vim在編輯方式下本來的光標移動是h, j, k, l,不過,上下左右箭頭也是可以使用的。
            4) 編輯完成后,(編輯方式下)按Shift+Z兩次,或者:wq就可以保存退出。使用:q!可以不保存強制退出。

            3.4.2:MinGW的簡單使用。(續)

                    繼續剛才的話題,我們建立一個叫 hello.cpp 的文件(據說Hello World是程序員的咒語...)

            #include <iostream>

            int main(int argc, char* argv[])
            {
                std::cout 
            << "Hello World." << std::endl;
                
            return 0;
            }

                    我們可以簡單的使用命令:g++ hello.cpp,與最傳統的Unix系統下的C編譯器一樣,MinGW為我們生成了一個名為a的可執行文件,當然,在win32下,名字叫做a.exe。
                    可以使用參數 -o 來指定編譯的可執行文件的名字:g++ -o hello.exe hello.cpp (或者也可以不寫名exe,直接g++ -o hello hello.cpp 結果一樣)。這樣,得到的文件就是hello.exe。
                    可以使用參數 -c 來生成與源文件名相同的目標文件:g++ -c hello.cpp ,得到的文件是hello.o 。
                    目標文件可以繼續連接成可執行文件:g++ hello.o ,得到文件a.exe 。
                    多個源文件,目標文件和庫文件都可以同時編譯和連接。

            3.5:獲得MinGW下的SDL開發庫。(Development Libraries)

                    下載頁面:http://www.libsdl.org/download-1.2.php
                    下載:SDL-devel-1.2.13-mingw32.tar.gz (Mingw32)

            3.6:為MinGW設置SDL庫。

                    找到你在硬盤上安裝MinGW的位置,類似:
            C:\MinGW
            打開include文件夾,在里面建立一個新文件夾,取名為SDL,打開這個新的文件夾:
            C:\MinGW\include\SDL
            然后,將SDL Development Libraries中include文件夾里面的文件全部拷貝到剛才建立起來的那個新文件夾中。
            然后,回到MinGW的文件夾下,打開lib文件夾:
            C:\MinGW\lib
            將SDL Development Libraries中lib文件夾下的libSDL.dll.a, libSDL.la和libSDLmain.a三個文件拷貝到剛才的那個MinGW的lib文件夾下。
            最后,把SDL Development Libraries中lib文件夾下的SDL.dll文件拷貝到
            C:\WINDOWS\system32
            下。當然,另外一個選擇是將SDL.dll隨時綁定到使用了SDL庫編譯的*.exe文件所在的文件夾中。這通常在發布你的程序的時候使用。

            3.7:建立第一個SDL程序。

            運行我們之前的那個startg++.bat 文件,打開console窗口,執行命令:vim main.cpp ,將下列代碼寫入并保存。

            #include <iostream>
            #include 
            "SDL/SDL.h"

            int main(int argc, char* argv[])
            {
                
            try {
                    
            if ( SDL_Init(SDL_INIT_EVERYTHING) == -1 )
                        
            throw "Could not initialize SDL!";
                }
                
            catch ( const char* s ) {
                    std::cerr 
            << s << std::endl;
                    
            return -1;
                }
                std::cout 
            << "SDL initialized.\n";
                SDL_Quit();

                
            return 0;
            }
            執行g++命令:g++ -o MySDL.exe main.cpp -lmingw32 -lSDLmain -lSDL
            參數 -l (小寫的L)使庫文件得以與源文件一起編譯和連接。(簡單的可以認為-labc即連接了名稱符合libabc.*的所有庫文件)
            最后說明的兩個參數是:-mconsole 和 -mwindows
            他們的效果是使可執行程序是帶命令行控制窗口的或者是純Windows窗口的,缺省情況下應該是帶命令行控制窗口的。
            運行mysdl.exe可以看到文件的執行情況。
            posted on 2008-02-01 01:19 lf426 閱讀(18934) 評論(10)  編輯 收藏 引用 所屬分類: SDL入門教程

            FeedBack:
            # re: SDL入門教程(一):3、MinGW 下的安裝與設置  2008-06-05 16:41 btest
            為什么我照上面的代碼編寫,console沒有任何輸出。然后去除SDL部分,console就能正常輸出?  回復  更多評論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設置 [未登錄] 2008-06-06 18:12 lf426
            MinGW的標準輸出(std::cout & std::cerr)是在一個叫stdout.txt的文本文件中。  回復  更多評論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設置 [未登錄] 2008-09-12 09:48 伊凡
            照做了,g++編譯出錯,找不到SDL_Init和SDL_Quit
            我已經把它們加到include里出了啊。。。
            同時頭文件引用也是"SDL/SDL.H"
            錯誤提示如下:
            I:\MinGW Progect>g++ -o main main.cpp
            C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc5wptK9.o:main.cpp:(.text+0x142): undefined
            reference to `SDL_Init'
            C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc5wptK9.o:main.cpp:(.text+0x22d): undefined
            reference to `SDL_Quit'
            H:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../libmingw32.a(main.o):main.c:(.tex
            t+0x104): undefined reference to `WinMain@16'
            collect2: ld returned 1 exit status  回復  更多評論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設置  2008-09-14 18:35 wintry
            @伊凡
            I:\MinGW Progect>g++ -o main main.cpp
            你編譯時少加上連接庫一起編譯:
            I:\MinGW Progect>g++ -o main.exe main.cpp -lmingw32 -lSDLmain -lSDL

              回復  更多評論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設置 [未登錄] 2008-09-15 08:19 伊凡
            抱歉……最后那行我沒仔細看。。。
            作者寫的很清楚啊。。。
            謝謝上面這位朋友wintry  回復  更多評論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設置 [未登錄] 2010-11-03 10:10 a
            為什么hello.cpp就能從控制臺輸出,而main.cpp就不行.  回復  更多評論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設置  2010-12-10 16:11 yj2005
            關于安裝MinGw的問題.
            Input commands
            >> mex -v // (在Matlab環境中)
            This is mex, Copyright 1984-2007 The MathWorks, Inc.

            -> Default options filename found in C:\Users\Administrator\AppData\Roaming\MathWorks\MATLAB\R2009a
            ----------------------------------------------------------------
            -> Options file = C:\Users\Administrator\AppData\Roaming\MathWorks\MATLAB\R2009a\mexopts.bat
            MATLAB = D:\PROGRA~1\Matlab
            -> COMPILER = gcc
            -> Compiler flags:
            COMPFLAGS = -c -DMATLAB_MEX_FILE -mno-cygwin
            OPTIMFLAGS = -O3
            DEBUGFLAGS = -g
            arguments =
            Name switch = -o
            -> Pre-linking commands =
            -> LINKER = D:\PROGRA~1\Matlab\sys\perl\win32\bin\perl.exe d:\PROGRA~1\matlab\gnumex\linkmex.pl
            -> Link directives:
            LINKFLAGS = -mno-cygwin -mwindows -LC:\Users\ADMINI~1\AppData\Roaming\MATHWO~1\MATLAB\R2009a\gnumex
            LINKDEBUGFLAGS = -g -Wl,--image-base,0x28000000\n
            LINKFLAGSPOST =
            Name directive = -o .mexw32
            File link directive =
            Lib. link directive =
            Rsp file indicator =
            -> Resource Compiler = D:\PROGRA~1\Matlab\sys\perl\win32\bin\perl.exe d:\PROGRA~1\matlab\gnumex\rccompile.pl --unix -o mexversion.res
            -> Resource Linker =
            ----------------------------------------------------------------
            Usage:
            MEX [option1 ... optionN] sourcefile1 [... sourcefileN]
            [objectfile1 ... objectfileN] [libraryfile1 ... libraryfileN]

            or (to build an Ada S-function):
            MEX [-v] [-g] -ada <sfcn>.ads

            Use the -help option for more information, or consult the MATLAB API Guide.


            D:\PROGRA~1\MATLAB\BIN\MEX.PL: Error: No file names given.

            ??? Error using ==> mex at 218
            Unable to complete successfully.


            復制MATLAB根目錄下 extern\examples\mex\yprime.c 文件到自己的測試目錄下。例如gnumex的examples目錄下。
            輸入命令

            mex yprime.c

            D:\PROGRA~1\MATLAB\BIN\MEX.PL: Error: 'yprime.c' not found.

            這是怎么回事呀?怎么會說:‘yprime.c‘沒有找到呢?
            請高手指點下。
              回復  更多評論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設置  2012-07-14 20:43 g

            H:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../libmingw32.a(main.o):main.c:(.tex
            t+0x104): undefined reference to `WinMain@16'
            怎么辦  回復  更多評論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設置  2012-07-14 21:12 g
            @g
            5. CodeBlocks/MinGW/lib/libmingw32.a(main.o):main.c|| undefined reference to `WinMain@16'
            此錯誤出現在鏈接完成的最后階段,是鏈接程序找不到程序的window入口點。引起此原因的的主要問題是MinGW好像只認識WinMain入口點,不認識高版本的_t WinMain入口點。_tWinMain 是基本函數。根據編譯標志 _MBCS 或 _UNICODE生成 int WinMain() 或 int wWinMain()。但在MinGW編譯器下,解決方法很簡單,就是將_tWinMain改為WinMain()。即使使用_UNICODE標志也只用采用int WinMain()作為程序入口點,而且這樣的設置程序運行正常!!
              回復  更多評論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設置  2013-03-01 22:13 ohmytime
            @lf426
            我想問的是,stdout.txt具體在哪里?
            當前目錄嗎?
            --------------------------------------------------------
            另外,我有一個程序ffmpeg.exe(版本1.1.2)依賴于SDL.dll 在控制臺沒有輸出信息,然后我重新編譯了SDL,選項有 --disable-stdio?
              回復  更多評論
              
            青青青青久久精品国产h久久精品五福影院1421 | 国产亚洲美女精品久久久| 久久亚洲美女精品国产精品| 午夜精品久久久内射近拍高清 | 曰曰摸天天摸人人看久久久| 久久久久99精品成人片试看| 色88久久久久高潮综合影院 | 99蜜桃臀久久久欧美精品网站| 久久艹国产| 91久久精品电影| 国产激情久久久久影院| AAA级久久久精品无码区| 999久久久免费国产精品播放| 久久亚洲精品中文字幕三区| 久久久久久久尹人综合网亚洲| 青青草国产成人久久91网| 国产99久久久久久免费看| 久久99精品久久久久久秒播| 久久青青国产| yy6080久久| 精品久久久久久中文字幕人妻最新| 男女久久久国产一区二区三区 | 91精品国产91久久久久久青草 | 四虎亚洲国产成人久久精品| 久久久久无码专区亚洲av| 久久有码中文字幕| 久久婷婷国产剧情内射白浆| 无码国内精品久久人妻| 成人免费网站久久久| 精品无码久久久久久国产| 日韩影院久久| 久久久久亚洲精品天堂| 中文字幕一区二区三区久久网站 | 少妇人妻综合久久中文字幕| 狠狠色婷婷久久一区二区| 国产精品99久久99久久久| 亚洲午夜久久久精品影院| 一级a性色生活片久久无少妇一级婬片免费放 | 青青草原综合久久| 亚洲精品综合久久| 久久久久女人精品毛片|