我正在开发应用程序使用的多个DLL。这个应用程序和DLL的功能是模块化的,每个都可以作为独立工作(即:仅限app,app + DDL_1,app + DLL_1 + DLL_2等)。
现在每当DLL崩溃时(即:NULL指针,堆栈溢出等),整个应用程序崩溃。有没有办法只让DLL崩溃,发生异常?我正在管理DLL而不是应用程序。
我知道DLL本身不会崩溃,因为它只是加载到应用程序中的代码。我想知道的是,如果有一种方法可以在运行时排除该DLL的特定功能,如果其中的某些内容出错。
答案 0 :(得分:3)
您必须将DLL作为子进程调用,而不是动态链接它。这需要一个单独的包装应用程序,它能够为您的父进程提供某种形式的IPC。
链接到主应用程序的DLL将导致堆栈指针和基指针移动到运行时加载到内存中的DLL的地址空间。这意味着如果它在DLL中崩溃,主应用程序本身将崩溃。 DLL本身并不是“崩溃”。它是使用存储在DLL中的函数运行的主要应用程序。