【发布时间】:2017-10-13 13:10:49
【问题描述】:
我正在开发一个应用程序使用的多个 DLL。此应用程序和 DLL 的功能是模块化的,它们中的每一个都可以独立工作(即:仅应用程序、应用程序 + DDL_1、应用程序 + DLL_1 + DLL_2 等)。
现在,每当 DLL 崩溃(即:NULL 指针、堆栈溢出等)时,整个应用程序都会崩溃。有没有办法只让发生异常的DLL崩溃?我正在管理 DLL,但不是应用程序。
更新
我知道 DLL 本身不会崩溃,因为它只是加载到应用程序中的代码。我想知道的是,是否有办法在运行时排除该 DLL 的特定功能,如果其中出现问题。
【问题讨论】:
-
你不能 afaik.. 一个 dll 被加载到当前应用程序的虚拟内存中。如果 dll 崩溃,应用程序也会崩溃。
-
Dll 只是一个带代码的文件,它不会崩溃。执行 dll 代码的进程会崩溃。
-
您的问题表明对多任务操作系统的运行方式缺乏了解,我认为这是真正的问题。我建议你先了解多任务操作系统中的进程,进程和线程之间的区别,以及什么是地址空间分离,然后再做其他任何事情。你确实需要理论基础。
-
@VTT :这听起来像是一个完整的答案。 (有一个次要警告,一个人可能能够安排一个线程崩溃。)