打印
[技术问答]

lib文件里面存放的是二进制还是其他代码?

[复制链接]
1159|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AloneKaven|  楼主 | 2023-11-28 10:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
是直接被编译成二进制文件了吗

使用特权

评论回复
沙发
heisexingqisi| | 2023-11-29 20:57 | 只看该作者
应该是中间码吧。汇编后的,链接前的。

使用特权

评论回复
板凳
捉虫天师| | 2023-11-30 16:01 | 只看该作者
不知道,反正不是源代码了。

使用特权

评论回复
地板
EmmaTT| | 2023-12-6 10:47 | 只看该作者
不是二进制

使用特权

评论回复
5
onlycook| | 2023-12-13 10:26 | 只看该作者
lib文件是静态库文件,它包含一组对象文件的二进制代码和符号信息,可以被编译器链接到可执行文件中。因此,lib文件里面存放的是二进制代码。

使用特权

评论回复
6
tpgf| | 2023-12-14 11:45 | 只看该作者
LIB文件中存放的是函数调用的信息,值得一提的是数据库有静态数据库(.lib文件)和动态数据库(.dll文件)。

使用特权

评论回复
7
观海| | 2023-12-14 12:26 | 只看该作者
动态LIB文件相当于一个C语言中的h文件,是函数导出部分的声明,而不将实现过程嵌入到程序本身中,编译后只是将函数地址存在宿主程序中,运行到调用函数是调用DLL并载入函数来实现函数的具体操作。

使用特权

评论回复
8
guanjiaer| | 2023-12-14 13:09 | 只看该作者
LIB文件是不对外公开的,除非有专门的LIB查看工具,否则不能查看LIB文件中对函数的具体实现过程

使用特权

评论回复
9
keaibukelian| | 2023-12-14 20:21 | 只看该作者
加入预编译指令#pragma comment (lib,"*.lib"),这种方法优点是可以利用条件预编译指令链接不同版本的LIB文件。因为,在Debug方式下,产生的LIB文件是Debug版本,如Regd.lib;在Release方式下,产生的LIB文件是Release版本,如Regr.lib。

使用特权

评论回复
10
heimaojingzhang| | 2023-12-14 20:54 | 只看该作者
查看LIB和DLL文件都可以通过OLLYDBG中LOADDLL插件来反汇编查看各个函数的过程。

使用特权

评论回复
11
八层楼| | 2023-12-14 21:30 | 只看该作者
静态编译将导出声明和实现都放在lib中。编译后所有代码都嵌入到宿主程序。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

75

主题

2062

帖子

0

粉丝