库和可执行文件的基址和大小

问题描述

我一直在阅读有关图像和 dll 的基址的信息。我想知道abse aqaddress一般是做什么用的,据我了解是用来加载虚拟内存中指定基地址的dll或image,这样对吗?

在源代码文本的后面几段中,它解释了我们可以指定 Dll 和图像的大小和基址,但是如果指定的大小小于 dll 或图像可执行文件所需的大小,则会出现错误链接显示。谁能解释一下指定尺寸的用途是什么?

https://docs.microsoft.com/en-us/cpp/build/reference/base-base-address?view=msvc-160

键是一串字母数字字符,不区分大小写 敏感的。它通常是 DLL 的名称,但不一定是。这 键后跟 C 语言中的基地址、十六进制或 十进制表示法和可选的最大尺寸。所有三个参数都是 由空格或制表符分隔。链接器发出警告,如果 指定的大小小于所需的虚拟地址空间 程序。注释由分号 (;) 指定,并且可以放在 相同或单独的行。链接器忽略来自 分号到行尾。这个例子显示了这样一个 文件

复制主 0x00010000 0x08000000 ;为PROJECT.exe一
0x28000000 0x00100000 ;对于 DLLONE.DLL 两个 0x28100000
0x00300000 ;对于 DLLTWO.DLL 如果包含这些行的文件 称为 DLLS.txt,以下示例命令应用此 信息:

复制链接 dlltwo.obj /dll /base:@dlls.txt,two 设置 基地址是通过在 NAME 或 LIBRARY 中使用 BASE 参数 陈述。 /BASE 和 /DLL 选项一起等效于 LIBRARY 语句。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)