Dev-Cpp/Mingw32 環境介紹(4)
上文回顧:
上文《Dev-Cpp/Mingw32 環境介紹(3)》向各位介紹了有關使用GDB調試程序的簡單方法。本文我們將會看看Mingw32如何來使用靜態連接庫。雖然本文出爐的時間的確是有些慢了點。不過我想各位應該能夠理解的。
第七章 在你的程序中使用靜態連接庫
在Windows中也許各位都會熟悉以obj和lib結尾的文件。這些文件就是Win32下的二進制文件和靜態連接庫。但是在Mingw32下有些特殊,我原來在第一章介紹過的。他們是o和a。很奇怪吧。不過我們這裏只要知道如何使用就可以了。關於更多的不在本文的範圍內。
我們先以VC爲例,各位知道在VC中使用靜態庫,要在連接程序的時候選擇導入的靜態庫。參數爲靜態庫的全名。比如winmm.lib但是在Mingw32下有些不同。你所使用的參數爲 -lwinmm這個就可以了。而-lwinmm的意思是導入靜態鏈接庫libwinmm.a。是不是有些想不通?下面我們來介紹一下在Dev中的使用和意義。
首先我們啓動Dev,新建一個工程。然後選擇工程->工程屬性。(如果你使用New Look圖標,那麼工程屬性就是一個盾型圖標。)然後,選擇參數選項卡。在連接器的文本框中輸入你要的參數,如-lwinmm。至於分割符,可以使用空格,也可以使用回車。不過我個人推薦回車。如果順利,你的界面看起來會像下圖。
當然你如果要使用*.lib可以,只要將文件名直接填入就可以了。就像 winmm.lib。當然如果用絕對路徑也可以。
下面我們來看看靜態連接庫的格式。當然,我們不是從文件格式去分析,而是從調用格式看。通常靜態庫的文件名爲 lib*.a其中*表示的就是任何字符。而在我們調用的時候,不需要將所有的文件名都用上,只需要使用*的內容就可以了。就像調用libwinmm.a的靜態庫我們只需要在連接的時候加參數 -lwinmm就可以了。前面的lib和後面的.a都不需要了。如果,還不太明白。可以看看dev安裝目錄中的lib目錄。裏面有很多win32下的靜態連接庫。自己分析一下文件名和調用方法就會很清楚了。
最後我們實戰一下靜態連接庫的使用。
寫什麼好呢?寫一個控制檯上的音樂播放器吧。當然只是簡單的播放音樂而已,而且路徑不支持中文。這裏只是爲了熟悉一下靜態庫的使用。
新建一個控制檯工程,然後我們在main.c的代碼中寫如下代碼。
//main.c
#include
#define MAX 255
int main(int argc, char *argv[])
{
if (argc == 2)
{
char filename[MAX];
strcpy(filename, "open ");
strcat(filename, argv[1]);
strcat(filename, " alias media");
mciSendString("close media",0,0,0);
mciSendString(filename,0,0,0);
mciSendString("play media",0,0,0);
system("pause");
}
else
{
printf("play.exe musicfilename");
}
return 0;
}
//main.c end
然後我們在工程屬性的連接器參數中輸入 -lwinmm 好了。開始編譯。如果順利,我們的程序就會編譯成功。並且可以播放一些常用的音樂文件。高興吧。
好了,這章我們就到這裏用這個例子結束了。
問外音:
由於本人最近比較忙,所以原來的兩章一文改成了一章一文。請原諒。下一章我們將介紹如何建立Mingw32的靜態連接庫。敬請期待。並且希望各位能夠多提意見。因爲不論是程序還是細想唯有通過不斷的交流才能愈加完善。
STUDIO軟件開發組
北斗星君(黃庠魁)