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