下载此文档

什么是动态链接库?.doc


文档分类:IT计算机 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
什么是动态链接库?.doc什么是动态链接库?
什么是 dll:
dll 只是一组源代码的模块,每个模块包含一些可供应用程序或者其他 dll 调用的函数, 在应用程序调用一个 dll 里面的函数的时候, 操作系统会将 dll 的 文件映像映射到进程的地址空间中, 这样进程中所有的线程就可以调用 dll 中的 函数了
dll 加载完成后, 这个时候 dll 对于进程中的线程来说只是一些被放在地址 进程空间附加的代码和数据, 操作系统为了节省内存空间, 同一个 dll 在内存中 只有一个,也就是说如果你的的两个应用程序都需要加载 ,那么操 作系统也只会加载一次 到内存中
因为代码段在内存中的权限都是为只读的, 所以当多个应用程序加载同一个 dll 的时候,不用担心应用程序会修改 dll 的代码段。当线程调用 dll 的一个函 数,函数会在线程栈中取得传递给他的参数, 并使用线程栈来存放他需要的变量, dll 函数创建的任何对象都为调用线程或者调用进程拥有, dll 不会拥有任何对 象,也就是说如果 dll 中的一个函数调用了 VirtualAlloc ,系统会从调用进程 的地址空间预定地址, 即使撤销了对 dll 的映射,调用进程的预定地址依然会存 在,直到 用户取消预定或者进程结束。
示例代码 :

#ifdef MYLIBAPI
#else
#define MYLIBAPI extern "C" __desclspec(dllimport)
#endif
5
MYLIBAPI int g_nResult;
7
8 MYLIBAPI int Add(int nLeft,int nRight)

1 #include <>
2
3 #define MYLIBAPI extern "C" __declspec(dllexport)
4 #include ""
int g_nResult;
6
int Add(int nLeft,int nRight)
{
g_nResult = nLeft + nRight;
return g_nResult;
}
输入命令 :
cl /LDd
可以生成可供调试的 dll
分别是
链接 器就会 生成
这个时候会多出四个文件 ,,,
保存的是在链接器生成 dll 的需要的信息 当链接器检测到应用程序导 出了 一个 函数 或者变 量, 文件, 这个只是列出了导出的函数和变量的符号名
输入命令查看 lib 里面的导出段
dumpbin -exports
Dump of Flie rt^
File Type: LIBRARY
Exports
opdinal name
| _fidd
g nJtesult
Sumnapy
BD , debugs
14
14 -idata$3
4 .idata$4
4 -idata$5
A .idata$6
我们可以看到这个lib里面export 了 _A

什么是动态链接库? 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小辰GG1
  • 文件大小58 KB
  • 时间2022-01-06
最近更新