FreeLibrary API调用失败时该怎么办?
|
题
我有一个第三方DLL,当尝试从本机C应用程序中将其卸载时会引发未处理的异常。这导致对FreeLibrary的调用失败,并且模块仍在我的进程中加载。
是否有任何选项可以强制卸载库?
FreeLibrary打电话时您会怎么做?
其他背景
当使用加载时动态链接时,这很烦人,但是最终应用程序被操作系统拆除。使用运行时动态链接时会出现问题。我加载了该DLL,使用了它,然后在某些情况下,我需要从进程的虚拟地址空间中将其卸载,然后继续运行。当我在第三方库上调用FreeLibrary时,它会做一些清理工作(即在DLL_PROCESS_DETACH被调用时在DllMain中)。在清理过程中,它会引发无法处理的异常,并作为FreeLibrary的未处理异常冒泡。这导致调用失败,并且模块仍保持加载状态。
我已经与供应商签了票,所以希望我能得到一个修复程序,该修复程序将允许该特定的库成功卸载。但是,如果我不这样做,并且对于这个问题的一般情况,我很好奇这些选项是什么。
没有找到相关结果
已邀请:
3 个回复
鞋扣蚊冈借
或者,如果它是您未显式加载的库(例如,由您加载的库加载的库依赖项)并且没有句柄,请使用GetModuleHandle:
枫湃揩乾纲
禽兢玫坞劲