处理 c 中的插件

Handling plug ins in c

本文关键字:插件 处理      更新时间:2023-10-16

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

一般来说,没有。

假设你使用的是运行时 DLL 导入或等效的传统LoadLibrary方法,则 DLL 将显式导入到调用进程的地址空间中。DLL 代码对主机应用程序内存的访问权限与主机应用程序本身一样多,因此即使在崩溃之前,它也可以破坏主机应用程序的状态。您唯一能做的就是崩溃并取出整个过程。

要保护主机应用程序,您必须咬紧牙关,将库加载到子进程或沙盒中。否则,您将隐式信任 DLL 执行正确的操作。

顺便说一下,这已经在这里得到了很好的回答。