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編譯器之間存在差異
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編譯器之間存在差異