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。