如何在vc中使用mingw編譯出來的動態庫和靜態庫 如何在vc中使用mingw編譯出來的動態庫和靜態庫

如何在vc中使用mingw編譯出來的動態庫和靜態庫

mingw編譯出來的靜態庫後綴名爲.a,編譯出來的動態庫的導入庫後綴名爲.dll.a,而在windows下後綴名爲.lib的庫可能是靜態庫也可能是動態庫的導入庫。

mingw編譯出來的動態庫的導入庫可以直接在vc中直接使用,例如

#pragma comment(lib, "libx264.dll.a")

這樣你就不需要生成一個.lib後綴的動態庫的導入庫了,網上也有如何從.dll生成.lib的方法。

如果鏈接了動態庫的導入庫libpthread.dll.a,你發佈的應用程序就要帶上pthread的dll。

使用靜態庫的好處是發佈的應用程序組件模塊裏不需要帶上相關的dll,如果要使用mingw編譯出來的靜態庫,可以如下:

#pragma comment(lib, "libx264.a")

但是僅僅鏈接這麼一個靜態庫是不夠的,你還需要鏈接

libgcc.a

libmingwex.a

你可能還需要鏈接libmsvcrt.a

否則會報一堆錯誤:error LNK2001: 無法解析的外部符號

上面的這些庫在C:\MinGW\lib目錄或子目錄下面可以找到。

鏈接這些庫的原因是mingw使用的gcc編譯器和vc編譯器之間存在差異

轉自:https://blog.csdn.net/qiuchangyong/article/details/19119997

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