在缺少相关DLL时,尝试使用LoadLibrary在Windows上加载DLL

Tom*_*don 11 c windows

我有一个在Windows上使用LoadLibrary来动态加载插件的应用程序.但是,某些插件具有其他依赖DLL,例如数据库客户端DLL.当您尝试加载这样的DLL并且其中一个从属DLL不存在时,您会得到一个令人讨厌的Windows对话框:

"程序无法启动,因为您的计算机缺少xxx.ddl.请尝试重新安装该程序以解决此问题."

有没有简单的方法来避免这种对话?我希望有人可以使用LoadLibraryEx并传递一个标志,上面写着"不要给我那个烦人的对话框",但它似乎并不像.

我想要的是应用程序处理该错误,而不是Windows为我处理它,特别是因为消息的文本不正确(问题不是程序无法启动,程序运行相当幸运的是,它只是无法加载此插件).

我想要避免的是必须重写具有这些外部依赖项的插件,使它们自己动态加载任何依赖模块,然后查询任何入口点.

无论如何,任何建议都会感激不尽.

kic*_*hik 13

使用SetErrorMode().SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS在加载DLL之前和0之后使用它.


Aam*_*mir 5

来自MSDN:

要在DLL加载期间启用或禁用加载程序显示的错误消息,请使用SetErrorMode函数.

链接在这里