【发布时间】:2011-06-23 19:34:59
【问题描述】:
我正在从 DLL 中调用一个函数,如下所示:
__declspec ( dllimport ) bool dll_function(...);
int main() {
[...]
if (dll_function(...)) {
[...]
}
}
在某些情况下,我传递给 DLL 函数的数据会导致 DLL 崩溃。是否有可能捕捉到这一点,这样我的应用程序也不会崩溃(不修改不是我创建的 DLL)?
【问题讨论】:
-
dll会抛出异常吗?还是一个错误?
-
DLL 没有抛出异常,我猜它试图访问无效内存,Windows 给出了一个典型的错误对话框,之后,我的应用程序将无法继续运行。
-
@GMan:我无权访问 DLL 源,也无法修改 DLL。我只是想知道是否有一些
try...catch方法可以防止我的应用程序崩溃。 -
在不知道函数来源的情况下几乎不可能解决这个问题。如果不是这种情况,您最好希望它有详细的文档记录,并且您可以弄清楚文档不允许您使用它做什么。
-
如果 DLL 发生硬崩溃,那么您不不想继续尝试。你不知道它做了什么以及它在什么记忆上乱涂乱画。