Dev-Cpp/Mingw32 環境介紹(4)

本文轉載自:http://blog.csdn.net/VisionCat/archive/2004/08/17/76863.aspx

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軟件開發組

北斗星君(黃庠魁)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章