静态链接的实质
在Pe文件的开发过程中,有静态链接,也有动态链接,我这里做了下学习,一次又一次的追本溯源,才弄清楚。c语言代码变成可执行的程序的过程 :首先是define 对代码进行替换 ,再编译成二进制的数据(以558B……这样的形式显示),最后链接,加入别人写好的代码(函数),这样loader就可以运行了。
在windows上叫静态链接和动态链接,这样exe就跑起来了。
静态链接的好处是方便 ,保密 。是编译时直接把代码编译到程序中去了,我们不知道它原来是不是程序的一部分。但是但是当我们想加入修改相关功能时就要重新编译dll和exe.
静态链接库的实现二进制代码全在.lib中,dll.cpp是实现过程,dll.h是代码的声明。 staticdll.lib是生成的静态二进制的数据,说明dll的实现代码在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时的系统函数都是静态链接库文件。
自己不知道看了多少次,现在才想通了。以做记忆吧! 支持一个~ 感谢分享
页:
[1]