社区
进程/线程/DLL
帖子详情
只有dll文件,没有lib文件,如何静态调用?
crazycock
2005-11-06 01:02:43
比如说delphi开发的一个dll,用delphi静态链接可以用
function Add(a:Integer;b:Integer):Integer;stdcall external 'delphi.dll';
这样子写,vc呢?动态调用当然没问题,问题是想知道能否静态调用?
...全文
1831
4
打赏
收藏
只有dll文件,没有lib文件,如何静态调用?
比如说delphi开发的一个dll,用delphi静态链接可以用 function Add(a:Integer;b:Integer):Integer;stdcall external 'delphi.dll'; 这样子写,vc呢?动态调用当然没问题,问题是想知道能否静态调用?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rageliu
2005-11-06
打赏
举报
回复
如何从dll文件导出对应的lib文件?
Visual C++ 开发工具提供了两个命令行工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个工具即可从dll导出其对应的lib。
1、在命令行执行:
dumpbin /exports yourdll.dll > yourdll.def
2、编辑 yourdll.def 文件,使之格式与.def文件格式一致。比如:
EXPORTS;
fn1;
fn2;
3、在命令行执行:
lib /def:yourdll.def /machine:i386 /out:yourdll.lib
Zhymax
2005-11-06
打赏
举报
回复
http://www.chinaitpower.com/A/2001-10-24/2732.html
zxyjyzxyjy
2005-11-06
打赏
举报
回复
为无LIB的DLL制作LIB函数符号输入库
本文介绍了在VC中针对无LIB时的DLL隐式链接,制作可供VC++使用的LIB函数符号输入库。具体步骤如下:
一、使用VC++的工具DUMPBIN将DLL中的导出函数表导出到一定义(.DEF)文件
EXAMPLE:
DUMPBIN VideoDeCoder.dll /EXPROTS /OUT:VideoDeCoder.def
二、将导出的.DEF文件整理为一符合.DEF个数的函数导出文件
EXAMPLE:VideoDeCoder.DEF 文件内容如下
Dump of file VideoDeCoder.dll
File Type: DLL
Section contains the following exports for VideoDeCoder.dll
0 characteristics
3D49E48F time date stamp Fri Aug 02 09:46:55 2002
0.00 version
1 ordinal base
11 number of functions
11 number of names
ordinal hint RVA name
1 0 00010F60 _TM_ClearDecoderBuff@4
2 1 00010E80 _TM_CloseDecoder@4
3 2 00010F00 _TM_DecodePicture@4
4 3 00010ED0 _TM_DecodePictureHeader@4
5 4 00010FD0 _TM_GetFileEnd@4
6 5 00011030 _TM_GetUValue@4
Summary
2000 .data
1000 .rdata
1000 .reloc
15000 .text
按照以下方法整理:
1)添加LIB说明
LIBRARY "VideoDeCoder" ;"xx"为DLL名称
DESCRIPTION "VideoDeCoder library"
2)去掉导出函数说明端以外的内容,在LIB说明下添加 "EXPROTS" 说明导出函数
LIBRARY "VideoDeCoder"
DESCRIPTION "VideoDeCoder library"
EXPORTS
ordinal hint RVA name
1 0 00010F60 _TM_ClearDecoderBuff@4
2 1 00010E80 _TM_CloseDecoder@4
3 2 00010F00 _TM_DecodePicture@
4 3 00010ED0 _TM_DecodePictureH
5 4 00010FD0 _TM_GetFileEnd@4
6 5 00011030 _TM_GetUValue@4
3)将所有的函数放至行首,去掉 "hint" 和 "RVA" 数据,留下函数的序号 "ordinal" ,在序号前加上 "@" 符号 形成 "_导出函数名@参数字节和 @序号" 此种格式(__stdcall 方式调用导出的函数符号是 "函数名称@参数字节和"). 最后形成.DEF文件如下:
LIBRARY "VideoDeCoder"
DESCRIPTION "VideoDeCoder library"
EXPORTS
TM_ClearDecoderBuff@4 @1
TM_CloseDecoder@4 @2
TM_DecodePicture@4 @3
TM_DecodePictureHeader@4 @4
TM_GetFileEnd@4 @5
TM_GetUValue@4 @6
TM_GetVValue@4 @7
TM_GetYValue@4 @8
TM_OpenDecoder@8 @9
TM_ReturnType@4 @10
TM_SetFileEnd@8 @11
三、使用VC++的LIB工具,带/DEF:(.def文件名) /MACHINE:IX86(80X86机器),就输出符合VC++格式的的LIB文件了.
EXAMPLE:
LIB /DEF:VideoDeCoder.def /MACHINE:IX86
四、接时带上LIB文件链接;注意的是当有些动态库DUMPBIN的只有函数名,无"@nn"的参数格式,如C++Builder写的DLL,输出就只有函数名符号,链接时就会报错: error LNK2002:unresolved external symbol "functionname@nn" 提示程序中引入的函数符号无法识别,这时只要将DEF文件中相应的函数名称改为functionname@nn方式,重新建立 LIB,重新链接即可
gohappy_1999
2005-11-06
打赏
举报
回复
一定要LIB吧。
可以根据该DLL用相关工具生成相应的LIB
动态库
DLL
文件
的动态
调用
和
静态
调用
参考百度百科和C++
调用
DLL
有两种方法—
静态
调用
&动态
调用
库
文件
一般指计算机上的一类
文件
,分两种,一种是
静态
库,另一种是动态库即
DLL
(Dynamic Link
Lib
rary)
文件
,又叫动态链接库
文件
。
静态
库和动态库的区别...
dll
文件
和
lib
文件
的区别和联系
动态链接 vs.
静态
链接:
DLL
文件
是动态链接库
文件
,它在运行时被加载到内存中,...函数声明和链接:无论是使用
DLL
文件
还是
LIB
文件
,都需要在程序中进行函数声明,以便在编译时或运行时正确链接和
调用
库中的函数。
VS中
lib
和
dll
以及生成
dll
却
没有
lib
Lib
文件
先来说一说
lib
文件
,C++中
lib
文件
主要有两类,一种是
静态
的编译连接,叫做
静态
链接库,另一种是动态的编译链接,和
Dll
文件
一起使用,在该小标题下,主要说一下
静态
链接库,另一种将在
Dll
文件
中讲解。...
DLL
调用
(1):C++
静态
调用
DLL
DLL
(Dynamic Link
Lib
rary)即动态链接库,
DLL
文件
中存放封装的函数和类,当程序需要
调用
DLL
所定义的功能时,需要先载入
DLL
文件
,然后取得函数的地址,最后进行
调用
。 通过
DLL
来
调用
功能,可实现代码的封装与复用...
C++
静态
库
调用
学习笔记——
静态
调用
C++
调用
dll
之
静态
调用
划重点: C++
调用
DLL
有两种方法: ...
静态
调用
需要为
调用
者提供两个
文件
:
lib
文件
及对应的头
文件
,例paneldata.
lib
、paneldata.h 具体
调用
的过程包括: 1、将.
lib
及.h放入
调用
程...
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章