天天看點

從DLL導出LIB檔案

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檔案所在的目錄

從DLL導出LIB檔案

3,使用dumpbin導出符号定義檔案def檔案:

指令格式:dumpbin /exports DLL檔案名.dll > 輸出符号定義檔案.def

 比如:dumpbin /exports sqlite3.dll >sqlite3.x64.def

4,使用文本編輯器,編輯def檔案

個人使用的sublime text,使用列選擇模式Ctrl+Alt+方向鍵。

編輯結果如下:

從DLL導出LIB檔案

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,導出完成,結果如下:

從DLL導出LIB檔案

因為前面已經說,sqlite-dll-******.zip包已經自帶了sqlite3.def這個符号檔案了,是以我們可以省略步驟3和步驟4,直接來到步驟5。

繼續閱讀