Q:從動态連結庫DLL檔案導出LIB檔案
詳情:
在Windows開發sqlite相關程式時,自己編譯SQLite源碼以生成dll或lib還是比較麻煩的,是以直接下載下傳sqlite-dll-******.zip。這個包解壓出來隻包含sqlite3.dll和sqlite3.def兩個檔案,沒有lib檔案。
常見的還有libcurl庫含有.a檔案,沒有lib檔案。
解決:
使用Virsual Studio自帶工具dumpbin.exe和lib.exe進行處理即可得到lib檔案。步驟如下:
1,首先檢查dump.exe所在目錄是否在計算機的【環境變量/Path】裡面。
dumpbin.exe的目錄在Virsual Studio目錄\VC\bin,如 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
如果沒有,則添加到Path中,因為lib.exe也是在這個目錄下。
2,打開cmd,切換目錄到 dll檔案所在的目錄
3,使用dumpbin導出符号定義檔案def檔案:
指令格式:dumpbin /exports DLL檔案名.dll > 輸出符号定義檔案.def
比如:dumpbin /exports sqlite3.dll >sqlite3.x64.def
4,使用文本編輯器,編輯def檔案
個人使用的sublime text,使用列選擇模式Ctrl+Alt+方向鍵。
編輯結果如下:
5,使用lib.exe導出lib檔案
指令格式:64位 lib /def:符号定義檔案.def /machine:x64 /out:輸出lib檔案.lib
指令格式:32位 lib /def:符号定義檔案.def /machine:x86 /out:輸出lib檔案.lib
比如:lib /def:sqlite3.x64.def /machine:x64 /out:sqlite3.lib
6,導出完成,結果如下:
因為前面已經說,sqlite-dll-******.zip包已經自帶了sqlite3.def這個符号檔案了,是以我們可以省略步驟3和步驟4,直接來到步驟5。