gpt4 book ai didi

c++ - 处理c中的插件

转载 作者:行者123 更新时间:2023-11-30 19:06:23 26 4
gpt4 key购买 nike

我正在制作一个使用动态代码重新加载的小型游戏引擎。更新功能由dll提供。每当发现新的 dll 时,它就会与新的更新函数一起加载。问题是内存错误仍然可能发生,因此段错误会导致整个引擎瘫痪。我问是否有一种方法可以处理此类情况并关闭 dll 等以从中恢复。我知道插件通过在单独的进程中运行来解决这个问题,但如果可能的话我宁愿不这样做。

最佳答案

一般来说,不会。

假设您使用运行时 DLL 导入的传统 LoadLibrary 方法或等效方法,则 DLL 会显式导入到 address space of the calling process 。 DLL 代码对主机应用程序内存的访问权限与主机应用程序本身一样多,因此即使在崩溃之前,它也可以破坏主机应用程序的状态。你唯一能做的就是崩溃并删除整个过程。

为了保护主机应用程序,您必须硬着头皮将库加载到子进程或沙箱中。否则,您就隐含地相信 DLL 会做正确的事情。

顺便说一句,这个问题已经得到了很好的回答 here .

关于c++ - 处理c中的插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48261921/

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