windows下lib,dll的生成及使用
来源:互联网 发布:login.php 编辑:程序博客网 时间:2024/05/16 09:39
导入库lib的生成:
文件mylib.dll
1、先用dumpbin.exe生成.def文件
(注:用vs2010下的dumpbin时,缺少mspdb100.dll,将Microsoft VisualStudio10.0\Common7\IDE\mspdb100.dll复制到\Microsoft Visual Studio 10.0\VC\bin;
移动后编译工程时会出现 "fatal errorC1902:程序数据库管理器不匹配;请检查安装解决", 用完后删除mspdb100.dll)
a、命令:dumpbin /exports /out:mylib.def mylib.dll
b、生成的文件如下:
Dump of file mylib.dll
File Type: DLL
Section contains the following exports for mylib.dll
00000000 characteristics
5527C8CE time date stamp Fri Apr 10 20:57:50 2015
0.00 version
1 ordinal base
1 number of functions
1 number of names
ordinal hint RVA name
1 0 0000100A ?returnInt@@YAHPBD@Z
Summary
7000 .data
1000 .idata
3000 .rdata
2000 .reloc
2A000 .text
c、修改此文件,只留下 name 一列
修改后文件如下:
EXPORTS
?returnInt@@YAHPBD@Z
文件mylib.dll
1、先用dumpbin.exe生成.def文件
(注:用vs2010下的dumpbin时,缺少mspdb100.dll,将Microsoft VisualStudio10.0\Common7\IDE\mspdb100.dll复制到\Microsoft Visual Studio 10.0\VC\bin;
移动后编译工程时会出现 "fatal errorC1902:程序数据库管理器不匹配;请检查安装解决", 用完后删除mspdb100.dll)
a、命令:dumpbin /exports /out:mylib.def mylib.dll
b、生成的文件如下:
Dump of file mylib.dll
File Type: DLL
Section contains the following exports for mylib.dll
00000000 characteristics
5527C8CE time date stamp Fri Apr 10 20:57:50 2015
0.00 version
1 ordinal base
1 number of functions
1 number of names
ordinal hint RVA name
1 0 0000100A ?returnInt@@YAHPBD@Z
Summary
7000 .data
1000 .idata
3000 .rdata
2000 .reloc
2A000 .text
c、修改此文件,只留下 name 一列
修改后文件如下:
EXPORTS
?returnInt@@YAHPBD@Z
(注:EXPORTS一定要大写)
(也可以直接使用pexports工具,无需修改文件 命令: pexports mylib.dll > mylib.def)
2、 用lib.exe生成.lib文件lib /def:my.def /machine:相应的机器类型 /out:mylib.lib
(也可以用dlltool生成.lib文件,试了以后没有能用,可能是机器类型不符合,待解决)
dll文件的使用(环境是VC6):
方案1:将my.dll文件放到工程目录下,源文件中加入 #pragma comment(lib, "mylib.lib")或者将lib连接到工程里
方案2:使用loadlibrary(), getProcAddress()函数
注意事项:
1、__declspec( dllexport ) 一定要加,不加不能导出函数
2、在生成dll文件时,要注意导出函数的调用约定,使用的时候导出函数的声明要与dll中的函数声明一致,否则会找不到函数
3、getProcAddress中第二个参数并不简单的是源程序中的自己定义的函数名,而是编译器生成的标识。不同的调用约定,语言类型会使编译器生成不用的标识,可以用depends工具查看dll文件中的导出函数的标识名,然后再用getProcAddress获取函数指针
4、生成dll时,使用纯C的函数形式较好且调用约定为__cdecl,此时getProcAddress第二个参数可以直接填写为自己定义的函数名;在C++中使用此dll,记得加extern "C"
0 0
- windows下lib,dll的生成及使用
- windows下sqlite的.dll生成.lib和c编程
- windows下编译x264,生成lib、dll
- windows下编译x264,生成lib、dll
- vc++ DLL、LIB文件的生成及使用
- VS2013下 .lib和.dll的生成与使用
- windows下的编译生成的R.dll 无R.lib 由dll生成lib的方法
- windows下LIB和DLL的区别与使用
- windows下LIB和DLL的区别与使用
- windows 下dll lib
- WIndows下编译libexif-0.6.21,生成VS下可用的dll和lib
- vs2008 dll lib的生成和使用
- windows xp下编译x264生成dll和lib文件
- VS2013下静态链接库(lib)和动态链接库(dll)的生成与使用
- cygwin下dll和lib的生成方法(转)
- cygwin下dll和lib的生成方法
- cygwin下dll和lib的生成方法
- Cygwin下dll和lib的生成方法
- ARM启动过程分析
- Arrange an Array to Form a Smallest Digit
- Candy--LeetCode
- C# ASP.NET 数据库连接ACCESS2010
- oc基础
- windows下lib,dll的生成及使用
- 关于OGG stats 命令的解释
- 用一个宏定义FIND求一个结构体struc里某个变量相对struc的偏移量
- 《数据结构编程实验》 4.3.1Polynomial Showdown
- 杭电ACM 1094:A+B for Input-Output Practice (VI)
- OC三大特性
- C++中map容器的说明和使用技巧
- http-关于application/x-www-form-urlencoded等字符编码的解释说明
- NSString NSProcessInfo(进程相关) NSFileHandle