• <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年2月>
            272829303112
            3456789
            10111213141516
            17181920212223
            2425262728291
            2345678

            E-mail:zbln426@163.com QQ:85132383 長(zhǎng)期尋找對(duì)戰(zhàn)略游戲感興趣的合作伙伴。

            常用鏈接

            留言簿(21)

            隨筆分類

            隨筆檔案

            SDL相關(guān)網(wǎng)站

            我的個(gè)人網(wǎng)頁(yè)

            我的小游戲

            資源下載

            搜索

            •  

            積分與排名

            • 積分 - 492144
            • 排名 - 38

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            作者:龍飛

            3.1:MinGW 是什么?

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

            3.2:為什么使用MinGW?

                    因?yàn)槲液秃芏郔T人士一樣,不愿意吊死在$M這棵樹上。且不說(shuō)開源這個(gè)理念的偉大,僅僅就Windows的安全性也已經(jīng)讓人們很不安心了。如果再深入一點(diǎn)從編寫程序來(lái)看,在C++標(biāo)準(zhǔn)尚不成熟時(shí)期產(chǎn)生的MFC今天看來(lái)基本上就是蓋子大叔憑著個(gè)人(或許是$M公司^^)理解所使用的C++方言。在我們期盼C++0x時(shí)代到來(lái)之前,沒(méi)有任何實(shí)際行動(dòng)能比嚴(yán)格遵循C++的ISO標(biāo)準(zhǔn)更能表達(dá)我們對(duì)于C++這個(gè)偉大的哲學(xué)體系的尊重。從這個(gè)角度來(lái)說(shuō),遵循ISO標(biāo)準(zhǔn)的實(shí)現(xiàn)就是好的實(shí)現(xiàn)。所以,MinGW不會(huì)比VC差,況且,他既是開源軟件家族中的一員,也是*nix平臺(tái)下事實(shí)標(biāo)準(zhǔn)GCC的翻版。如果有一天我們開始使用Linux平臺(tái)了,會(huì)因?yàn)榻裉焱高^(guò)MinGW所了解的GCC知識(shí)而受益。

            3.3:MinGW 的下載和安裝。

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


            3.4:MinGW的簡(jiǎn)單使用。

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

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

            3.4.1:(插播)Vim ??


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

            3.4.2:MinGW的簡(jiǎn)單使用。(續(xù))

                    繼續(xù)剛才的話題,我們建立一個(gè)叫 hello.cpp 的文件(據(jù)說(shuō)Hello World是程序員的咒語(yǔ)...)

            #include <iostream>

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

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

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

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

            3.6:為MinGW設(shè)置SDL庫(kù)。

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

            3.7:建立第一個(gè)SDL程序。

            運(yùn)行我們之前的那個(gè)startg++.bat 文件,打開console窗口,執(zhí)行命令: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;
            }
            執(zhí)行g(shù)++命令:g++ -o MySDL.exe main.cpp -lmingw32 -lSDLmain -lSDL
            參數(shù) -l (小寫的L)使庫(kù)文件得以與源文件一起編譯和連接。(簡(jiǎn)單的可以認(rèn)為-labc即連接了名稱符合libabc.*的所有庫(kù)文件)
            最后說(shuō)明的兩個(gè)參數(shù)是:-mconsole 和 -mwindows
            他們的效果是使可執(zhí)行程序是帶命令行控制窗口的或者是純Windows窗口的,缺省情況下應(yīng)該是帶命令行控制窗口的。
            運(yùn)行mysdl.exe可以看到文件的執(zhí)行情況。
            posted on 2008-02-01 01:19 lf426 閱讀(18936) 評(píng)論(10)  編輯 收藏 引用 所屬分類: SDL入門教程

            FeedBack:
            # re: SDL入門教程(一):3、MinGW 下的安裝與設(shè)置  2008-06-05 16:41 btest
            為什么我照上面的代碼編寫,console沒(méi)有任何輸出。然后去除SDL部分,console就能正常輸出?  回復(fù)  更多評(píng)論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設(shè)置 [未登錄](méi) 2008-06-06 18:12 lf426
            MinGW的標(biāo)準(zhǔn)輸出(std::cout & std::cerr)是在一個(gè)叫stdout.txt的文本文件中。  回復(fù)  更多評(píng)論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設(shè)置 [未登錄](méi) 2008-09-12 09:48 伊凡
            照做了,g++編譯出錯(cuò),找不到SDL_Init和SDL_Quit
            我已經(jīng)把它們加到include里出了啊。。。
            同時(shí)頭文件引用也是"SDL/SDL.H"
            錯(cuò)誤提示如下:
            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  回復(fù)  更多評(píng)論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設(shè)置  2008-09-14 18:35 wintry
            @伊凡
            I:\MinGW Progect>g++ -o main main.cpp
            你編譯時(shí)少加上連接庫(kù)一起編譯:
            I:\MinGW Progect>g++ -o main.exe main.cpp -lmingw32 -lSDLmain -lSDL

              回復(fù)  更多評(píng)論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設(shè)置 [未登錄](méi) 2008-09-15 08:19 伊凡
            抱歉……最后那行我沒(méi)仔細(xì)看。。。
            作者寫的很清楚啊。。。
            謝謝上面這位朋友wintry  回復(fù)  更多評(píng)論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設(shè)置 [未登錄](méi) 2010-11-03 10:10 a
            為什么hello.cpp就能從控制臺(tái)輸出,而main.cpp就不行.  回復(fù)  更多評(píng)論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設(shè)置  2010-12-10 16:11 yj2005
            關(guān)于安裝MinGw的問(wèn)題.
            Input commands
            >> mex -v // (在Matlab環(huán)境中)
            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.


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

            mex yprime.c

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

            這是怎么回事呀?怎么會(huì)說(shuō):‘yprime.c‘沒(méi)有找到呢?
            請(qǐng)高手指點(diǎn)下。
              回復(fù)  更多評(píng)論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設(shè)置  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'
            怎么辦  回復(fù)  更多評(píng)論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設(shè)置  2012-07-14 21:12 g
            @g
            5. CodeBlocks/MinGW/lib/libmingw32.a(main.o):main.c|| undefined reference to `WinMain@16'
            此錯(cuò)誤出現(xiàn)在鏈接完成的最后階段,是鏈接程序找不到程序的window入口點(diǎn)。引起此原因的的主要問(wèn)題是MinGW好像只認(rèn)識(shí)WinMain入口點(diǎn),不認(rèn)識(shí)高版本的_t WinMain入口點(diǎn)。_tWinMain 是基本函數(shù)。根據(jù)編譯標(biāo)志 _MBCS 或 _UNICODE生成 int WinMain() 或 int wWinMain()。但在MinGW編譯器下,解決方法很簡(jiǎn)單,就是將_tWinMain改為WinMain()。即使使用_UNICODE標(biāo)志也只用采用int WinMain()作為程序入口點(diǎn),而且這樣的設(shè)置程序運(yùn)行正常!!
              回復(fù)  更多評(píng)論
              
            # re: SDL入門教程(一):3、MinGW 下的安裝與設(shè)置  2013-03-01 22:13 ohmytime
            @lf426
            我想問(wèn)的是,stdout.txt具體在哪里?
            當(dāng)前目錄嗎?
            --------------------------------------------------------
            另外,我有一個(gè)程序ffmpeg.exe(版本1.1.2)依賴于SDL.dll 在控制臺(tái)沒(méi)有輸出信息,然后我重新編譯了SDL,選項(xiàng)有 --disable-stdio?
              回復(fù)  更多評(píng)論
              
            久久精品国产一区二区电影| 久久久久国产一区二区三区| 久久精品亚洲日本波多野结衣| 久久精品国产91久久麻豆自制| 久久天天躁夜夜躁狠狠| 精品无码久久久久久国产| 国产成人精品久久二区二区| 狠狠色丁香久久婷婷综合五月| 人妻少妇久久中文字幕一区二区| 偷窥少妇久久久久久久久| 亚洲乱码日产精品a级毛片久久| 久久福利片| 久久天堂AV综合合色蜜桃网| 日日狠狠久久偷偷色综合免费| 久久九九久精品国产| 久久天天躁狠狠躁夜夜96流白浆| 久久久久久久亚洲精品| 97久久久精品综合88久久| 欧美国产成人久久精品| 久久国产成人| 久久国产视屏| 香港aa三级久久三级| 国产精品成人99久久久久 | 亚洲午夜福利精品久久| 伊人色综合久久天天| 人妻少妇久久中文字幕| 久久人人爽人人爽人人片av麻烦 | 亚洲va中文字幕无码久久| 久久精品亚洲日本波多野结衣| 思思久久99热只有频精品66| 欧美成人免费观看久久| 无码任你躁久久久久久老妇| 国产精品久久久久久久午夜片 | 久久久久久精品免费看SSS| 午夜精品久久久久久影视777| 久久精品这里只有精99品| yellow中文字幕久久网| 九九久久99综合一区二区| 国产韩国精品一区二区三区久久 | 中文字幕久久久久人妻| 97r久久精品国产99国产精|