天天看点

从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。

继续阅读