`
webcode
  • 浏览: 5948075 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

VS20XX使用DEF文件来生成DLL与Lib

阅读更多

在程序使用Dll有两个加载方式,一种是动态方式,就是LoadLibrary载入Dll,然后用GetProcAddress来加载需要使用的Dll函数。另一种就是静态连接方式,将dll生成的lib,加入到工程中,然后使用时就像使用Win API一样使用。

今天我们不讨论动态载入的方式,我们采用静态载入的方式。但有一个问题,由于很多Dll发布的时候,根本就不提供lib,也或许你在使用一个未公开的dll,没有lib我们就不能静态加载,我手工来生成吧。

手工生成

可以使用PE解析器 或者dumpbin获取此Dll所有导出函数,然后将这些导出函数名复制出来,新一个xxx.def文件,其中的xxx为你的dll文件名,格式如下:

EXPORTS
sqlite3_aggregate_context
sqlite3_aggregate_count
sqlite3_auto_extension
sqlite3_backup_finish
sqlite3_backup_init
sqlite3_backup_pagecount
sqlite3_backup_remaining
sqlite3_backup_step
sqlite3_bind_blob
sqlite3_bind_double
sqlite3_bind_int
sqlite3_bind_int64

将xxx.dll和xxx.def,放到一个文件夹中,启动“Visual Studio 2005 命令提示”,位置:
“开始”->”Microsoft Visual Studio 2005″ -> “Visual Studio Tools” -> “Visual Studio 2005 命令提示”

将工作目录切换到放有xxx.dll和xxx.def的文件夹中输入:

lib /def:xxx.def /MACHINE:x86

这样将会产生一个xxx.lib了,将此lib文件和dll文件拷到工程中,就可以进行静态链接了。

IDE 生成

VS2005使用DEF文件来生成DLL与Lib时,与VC6的设置是不一样的。
VC6工程中,只要有DEF文件并将其添加到工程中,VC6就可以自动地生成DLL与其相应的Lib文件了。
但是VS2005不一样,需要指定DEF文件,方法如下:

把 sqlite.def 添加到工程中.

选择 工程 > 属性中的链接器,然后找到"输入"这一项. 在 "模块定义文件" 中输入 sqlite.def

注意: 你需要在 Debug 和 Release 中都输入该项才行.

分享到:
评论

相关推荐

    BCB由DLL生成LIB及def文件方法

    BCB由DLL生成LIB及def文件方法,而非转换VC的lib文件,这样生成的lib文件包含DLL中函数最全,

    使用VS的lib命令生成def和lib文件1

    使用 visual studio command prompt命令窗口,执行如下命令:lib /def:libvlc.def /out:libvlc.lib /

    MingW VC 之.a .lib .dll .def 关系

    MinGW 之 (lib,dll,def,obj,exe) vs (a,dll,def,o,exe) 玩转攻略手记 一份粗糙的研究记录,有待补完和整理。 MinGW: c -> o gcc -c a.c c -> exe gcc a.c libs.o -o a.exe (从主程序a.c,附加libs,生成a.exe) o -...

    win32命令行用def文件生成dll文件(C语言)

    在win32 sdk 命令提示符下用def文件构建dll,虽然简单,但是该有的步骤都说明了。高手请多提意见。

    由DLL文件生成LIB文件的工具

    选择DLL文件,自动生成DEF文件和LIB文件

    Windows上编译的libx264(源码+生成DLL、lib、def)

    Windows上编译的libx264(源码+生成DLL、lib、def),没有依赖项,不想自己配置环境编译代码的人可以拿去用。

    DLL2LIB.zip

    DLL生成LIB的工具箱。里面包含两个工具,一个工具快速生成DEF和LIB文件,另一个工具修改LIB文件的函数命名方式。

    sqlite32位与64位 h,lib,dll

    5)在命令窗内运行命令进入sqlite-dll-win32-x86-3070500文件夹6)执行LIB /DEF:SQLITE3.DEF /MACHINE:IX86或LIB /DEF:SQLITE3.DEF 即可生成sqlite3.lib文件。7)执行LIB /DEF:SQLITE3.DEF /MACHINE:X64即可生成64位...

    Lib 文件生成器 (DLL2Lib)

    C++Builder 的链接器在链接 DLL 时需要导入库(Import Library),在有些情况下,只能得到 DLL 文件,而没有导入库文件(比如用 Delphi 开发的 DLL),使用这个工具可以方便的生成 DLL 对应的导入库和模块定义文件DEF...

    CppDLLv1.1 帮助生成.h,.def以及.lib的工具

    CppDLL v1.1 is a small tool that will help you generate Cpp Header(.h) and Import Library(.lib) from Dynamic Link Library(.dll). Author: rrrfff Blog: http://blog.csdn.net/rrrfff

    dll2lib.rar (需要安装 python2.X )

    该python脚本对一个 A.dll 文件会生成如下三个文件: A.lib A.def A.exp 因为是 python 写的,所以需要下载 python (目前为 2.7 ,不要使用 3.X 版的,因为 3.X 版认为 print "string" 是语法错误的) ----------...

    pexports0.44(dll导出lib工具)

    从dll中导出lib的工具。可用于win7 64位系统。 命令格式如下:pexports XX.dll > XX.def

    Dll2Lib.exe

    VC++ 和 C++Builder 的链接器在链接 DLL 时需要导入库(Import Library),在有些情况下,只能...如用 Delphi 开发的 DLL),使用这个工具可以方便的生成 DLL 对应的 导入库和模块定义文件DEF(module-definition file)。

    gmp大数库(dll,lib,def)

    WINDOWS下的GMP大数库的LIB,DLL,DEF文件

    sqlite(dll,def,lib,.h)

    sqlite3.dll,sqlite3.lib,sqlite3.h,sqlite3.def等库文件

    查看dll接口和生成dll的导入库和def文件的工具

    两个工具,一个工具为查看dll的接口;另外一个工具可以将dll文件得到它的导入库lib和接口的def文件。很多时候只有dll文件,没有lib导入库和def文件时,这个工具很好用。

    pexports (将dll生成def文件)

    使用方法,将pexports.exe放到X:\Microsoft Visual Studio X.0\VC\bin目录下,在命令行里输入pexports x.dll > x.def 然后在输入lib /machine:ix86 /def:x.def 即在当前目录生成x.lib 执行之前可能需要运行vcvars32...

    mingw 生成.a 转为.lib

    使用MinGW编译一份库代码,可能是由于configure不好,导致只能生成.a文件,google发现一些方法,备份一下。

    dll导出lib必备神器组合

    有时候我们只有动态库,但是想得到静态库就可以使用这个工具。具体命令如下: 步骤一:pexports *.dll > *3.def 步骤二:LIB /machine:X86 /DEF:*.def

Global site tag (gtag.js) - Google Analytics