吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1728|回复: 2
收起左侧

[C&C++ 转载] 静态链接的实质

[复制链接]
2016wapjpc 发表于 2019-6-26 11:26
在Pe文件的开发过程中,有静态链接,也有动态链接,我这里做了下学习,一次又一次的追本溯源,才弄清楚。

c语言代码变成可执行的程序的过程    :首先是define 对代码进行替换   ,再编译成二进制的数据(以558B……这样的形式显示),最后链接,加入别人写好的代码(函数),这样loader就可以运行了。
在windows上叫静态链接和动态链接,这样exe就跑起来了。
静态链接的好处是方便 ,保密 。是编译时直接把代码编译到程序中去了,我们不知道它原来是不是程序的一部分。但是但是当我们想加入修改相关功能时就要重新编译dll和exe.


静态链接库的实现二进制代码全在.lib中,dll.cpp是实现过程,dll.h是代码的声明。 staticdll.lib是生成的静态二进制的数据,说明dll的实现代码在lib中。

dll.h

dll.h

dll.cpp

dll.cpp

staticdll.lib

staticdll.lib


这样,在编写的exe代码中可调staticdll.lib。

#include "stdafx.h"
#include "DLL.h"

#pragma comment(lib,"staticdll")

int main(int argc, char* argv[])
{
        int x = Mul(1,4);
        int y = Add(2,3);
        printf("%d  %d\n",x,y);
        return 0;
}
这样生成exe就成功调用我我们自己写的静态链接库文件了。其实我们用vc时的系统函数都是静态链接库文件。
sshot-1.png

自己不知道看了多少次,现在才想通了。以做记忆吧!

免费评分

参与人数 2吾爱币 +3 热心值 +2 收起 理由
苏紫方璇 + 2 + 1 用心讨论,共获提升!
春天的萌动 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

fnp902003 发表于 2019-6-26 13:14
支持一个~
201511106109 发表于 2020-2-27 12:39
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-6 13:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表