gpt4 book ai didi

windows - 从文件中的偏移量加载库

转载 作者:可可西里 更新时间:2023-11-01 10:08:53 25 4
gpt4 key购买 nike

我正在编写一个可编写脚本的游戏引擎,为此我有大量执行各种任务的类。引擎的大小正在迅速增长,所以我想到将大型可执行文件拆分为 dll 模块,以便只包含游戏编写者实际使用的组件。当用户编译他们的游戏(也就是说他们的脚本)时,我希望正确的 dll 成为最终可执行文件的一部分。我已经有相当多的覆盖数据,所以我想我可以将 dll 存储为这个 block 的一部分。我的问题归结为:

是否可以欺骗 LoadLibrary 从某个偏移量开始读取文件?这将使我不必将 dll 提取到一个不干净的临时文件中,或者完全取消自动包含 dll 并简单地指示我的用户将 dll 与他们的游戏一起打包。

最初我想采用“从内存加载 dll”的方法,但以可移植性为由拒绝了它,只是因为它看起来像一个可怕的 hack。

有什么想法吗?

亲切的问候,

菲利普·本尼法尔

最佳答案

您正在尝试解决一个不存在的问题。加载 DLL 实际上不需要任何物理内存。 Windows 为 DLL 内容创建一个内存映射文件。来自 DLL 的代码只有在您的程序调用该代码时才会被加载。未使用的代码不需要任何超出保留内存页的系统资源。在 32 位操作系统上,您拥有 20 亿字节的数据。您必须编写很多代码才能全部使用它们,50 兆字节的机器代码已经是一个非常大的程序。

内存映射也是您无法让 LoadLibrary() 执行您想要执行的操作的原因。没有您需要的现实场景。

查看链接器的/DELAYLOAD 选项以提高启动性能。

关于windows - 从文件中的偏移量加载库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6168676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com