处理 c 中的插件
Handling plug ins in c
我正在制作一个使用动态代码重新加载的小型游戏引擎。更新功能由 dll 提供。每当找到新的 dll 时,它都会与新的更新函数一起加载。问题是内存错误仍然可能发生,因此段错误会关闭整个引擎。我问是否有办法处理这种情况并关闭 dll 等以从中恢复。我知道插件通过在单独的进程中运行来解决此问题,但如果可能的话,我宁愿不这样做。
一般来说,没有。
假设你使用的是运行时 DLL 导入或等效的传统LoadLibrary
方法,则 DLL 将显式导入到调用进程的地址空间中。DLL 代码对主机应用程序内存的访问权限与主机应用程序本身一样多,因此即使在崩溃之前,它也可以破坏主机应用程序的状态。您唯一能做的就是崩溃并取出整个过程。
要保护主机应用程序,您必须咬紧牙关,将库加载到子进程或沙盒中。否则,您将隐式信任 DLL 执行正确的操作。
顺便说一下,这已经在这里得到了很好的回答。
相关文章:
- 警告处理为错误这里有什么问题
- 从C++本机插件更新Vector3数组
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 使用CMake创建QML插件
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 使用流处理接收到的数据
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 基于多个条件处理地图中的所有元素
- 如何用数字处理log(0)
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- 在 C++ 节点 nan 插件中处理 JavaScript 对象
- 处理 c 中的插件
- gdb 漂亮打印机插件例程 处理 std::basic_string<wchar_t(,.*)?>$
- 处理协议插件中的自定义选项
- Mingw x64 Windows:插件需要处理lto对象
- Outlook插件:在带有调度指针的NewMail处理程序上
- c++插件应用程序的异常处理计划
- 如何处理从浏览器打开的文件NPAPI插件