C語言沒有圖形庫,似乎編寫C語言的程序就要面對那個黑黑的控制台窗口,這也是很多人對C語言提不起興趣的原因,但我們可以使用第三方的圖形庫,比如說open GL,directX,SDL等等,其中SDL比較小巧,並且是開源的,適合入門者學習。有了圖形庫以後我們就可以編寫界面豐富多彩的程序了,你會發現一片新的天地!
SDLSimple DirectMedia Layer)是一個自由的跨平台的多媒體開發包,適用於 游戲、游戲SDK、演示軟件、模擬器、MPEG播放器和其他應用軟件。
SDL圖形庫包括八個子系統:視頻、音頻、事件、光驅、文件讀寫、游戲桿、時間、進程。最經常使用的是前三個,每一個子系統都有專門的安裝包:
SDL安裝包:http://www.libsdl.org/release/SDL-devel-1.2.14-VC8.zip
圖像子系統安裝包:
http://www.libsdl.org/projects/SDL_image/release/SDL_image-devel-1.2.10-VC.zip
音頻子系統安裝包:
http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-devel-1.2.11-VC.zip
這三個安裝包都包含了這樣兩個目錄:include和lib。其中include目錄存放的頭文件,就像C語言自帶的頭文件一樣,要使用SDL系統的函 數,必須包含相應的頭文件,lib目錄下存放的是一些靜態庫.lib)和動態庫.dll),這些庫裡存放的是函數的二進制代碼,你在你的程序裡包含了 頭文件以後,還要加載相應的庫,否則編譯器找不到相應的函數的代碼會報錯的,C語言自帶的庫默認就添加到了你C語言程序裡了,不用顯示自己管,但SDL不是C語言自帶的庫,所以必須自己添加這些庫。
要添加這些庫,有兩種方式,第一種是把頭文件,庫文件放到系統目錄下,讓編譯器能找的到就可以了;第二種,自己建一個目錄包含頭文件、動態庫、靜態庫,然後在編譯器裡設置工程屬性就可以了。建議使用第二種方式。下面就這兩種方式分別說明。
第一種方式,首先將SDL-devel-1.2.14-VC8.zip解壓後會有兩個目錄:
然後到VS2005的安裝目錄下找到一個名叫include的目錄,一般vs2005默認的安裝目錄是c:\Program Files\Microsoft Visual Studio 8\VC或D:\Program Files\Microsoft Visual Studio 8\VC,特別提醒vs必須安裝到英文目錄名下,否則SDL不能使用,SDL對中文支持不好。vs2008/vs2010也同樣。
在vc下有一個include目錄,在include目錄下建立一個新目錄,比如說SDL,將解壓後的include目錄下的文件拷貝到新建的SDL目錄下。
D:\Program Files\Microsoft Visual Studio 8\VC
將解壓後的lib目錄下後綴為lib的文件拷貝到安裝目錄下一個名叫lib目錄下,將後綴為dll的文件拷貝到C:\WINDOWS\system32下。對SDL_image-devel-1.2.10-VC.zip和SDL_mixer-devel-1.2.11-VC.zip做同樣的處理。
第二種種方式,首先建立一個目錄,假定名字為SDL,在目錄下建三個文件夾:include、dll、lib,將下在下來的安裝包解壓,比如SDL-devel-1.2.14-VC8.zip解壓後會有兩個目錄:
將include目錄下的頭文件拷貝到SDL\include下,將lib目錄下的後綴為.lib的文件拷貝到SDL\lib下,將lib下後綴為.dll的文件拷貝到SDL\dll下。對SDL_image-devel-1.2.10-VC.zip和SDL_mixer-devel-1.2.11-VC.zip做同樣的處理。
做完這些工作後,我們就可以在VC下建立一個控制台工程,選空工程,然後我們分別就第一種方式和第二種方式設置工程的屬性。
新建一個test.c文件。
在項目菜單裡選擇屬性。
在彈出的窗口的左邊的欄目裡選擇鏈接器—輸入,然後在右邊區域選擇附加依賴,彈出窗口。
在附加依賴窗口裡如下圖填寫依賴文件,然後點擊確定按鈕。
在左邊欄選擇c/c++下的代碼生成。在右邊窗口中做如下設置:
這樣,我們就配置好了工程的屬性,工程配置無論是第一種方式還是第二種方式都要配置。
下面在test.cpp 裡輸入測試代碼:
1 #include <stdio.h>
2
3 #include <stdlib.h>
4
5 #include <SDL\SDL.h>
6
7 SDL_Surface *gpScreen;
8
9int main(int argc,char *argv[])
10
11 {
12
13if((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)==-1)) {
14
15 exit(-1);
16
17 }
18
19 gpScreen = SDL_SetVideoMode(600,600, 0,
20
21 SDL_HWSURFACE | SDL_HWPALETTE | SDL_DOUBLEBUF );
22
23if( NULL == gpScreen ) {
24
25 SDL_Quit();
26
27return -1;
28
29 }
30
31 SDL_Delay(3000);
32
33 SDL_FreeSurface(gpScreen);//退出程序前必須釋放
34
35 SDL_Quit();//關閉SDL各個子系統
36
37 system("pause");
38
39return0;
40
41 }
注意必須包含頭文件<SDL\SDL.h>,其中SDL是你在安裝目錄\include下建立的目錄,vc所有的頭文件都在include目錄下,我們引用stdio.h等頭文件都是從include下查找的, SDL.h在include下SDL目錄下,所以引用它必須用#inlcude < SDL\SDL.h >,再者主函數頭必須這樣寫int main(int argc,char *argv[]),不能寫成int main(void)。
如果編譯通過,運行的時候會出現兩個窗口:
那麼證明你sdl安裝成功,可以編寫游戲了。
如果是第二種方法,打開vc的工具菜單-選項:
在選項窗口裡左邊欄裡選擇項目和解決方案---vc++目錄vs2010下不能配置,因為vs2010vc++目錄下沒有這些東西)
在“顯示以下內容的目錄”---包含文件,點擊 ,
點擊 ,選擇你按第二種方式建立的SDL目錄下的include目錄
同樣的方式,選擇“庫文件”
點擊 ,選擇你按第二種方式建立的SDL目錄下的lib目錄
動態庫的路徑可以這樣添加,右鍵我的電腦—屬性,選擇高級。
點擊環境變量按鈕。
在系統變量下選擇path
點編輯
在變量值的最後面,添加一個分號西文狀態),然後將你按第二種方式建立的SDL目錄下的dll目錄的路徑寫下,如下圖。
最後面一定要有一個\。
第二種方式配置完畢後,也要按第一種方式配置項目屬性,添加依賴項。
為什麼要用第二種方式呢,因為第一種方式往系統目錄下添加文件,可能覆蓋其他程序的文件,從而影響其他程序的使用,所以采用第二種方式,第二種方式不會影響其他程序。
至此,SDL環境就配置完畢了,下一次將討論簡單的SDL起動。
本文出自 “學習之樂” 博客,請務必保留此出處http://chengshaolei.blog.51cto.com/1994169/1291959