好友
阅读权限 10
听众
最后登录 1970-1-1
在Pe文件的开发过程中,有静态链接,也有动态链接,我这里做了下学习,一次又一次的追本溯源,才弄清楚。
c语言代码变成可执行的程序的过程 :首先是define 对代码进行替换 ,再编译成二进制的数据(以558B……这样的形式显示),最后链接,加入别人写好的代码(函数),这样loader就可以运行了。
在windows上叫静态链接和动态链接,这样exe就跑起来了。
静态链接的好处是方便 ,保密 。是编译时直接把代码编译到程序中去了,我们不知道它原来是不是程序的一部分。但是但是当我们想加入修改相关功能时就要重新编译dll和exe.
静态链接库的实现二进制代码全在.lib中,dll.cpp是实现过程,dll.h是代码的声明。 staticdll.lib是生成的静态二进制的数据,说明dll的实现代码在lib中。
dll.h
dll.cpp
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时的系统函数都是静态链接库文件。
自己不知道看了多少次,现在才想通了。以做记忆吧!
免费评分
查看全部评分
发帖前要善用【论坛搜索 】 功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。