我有一个在Windows上使用LoadLibrary来动态加载插件的应用程序。但是,某些插件具有其他依赖DLL,例如数据库客户端DLL。 当您尝试加载这样的DLL并且其中一个从属DLL不存在时,您会得到一个令人讨厌的Windows对话框:
“程序无法启动,因为您的计算机缺少xxx.ddl。请尝试重新安装该程序以解决此问题。”
有没有简单的方法可以避免这种对话?我希望有人可以使用LoadLibraryEx并传递一个标志,上面写着“不要给我那个恼人的对话框”,但它看起来并不像。
我想要的是应用程序处理该错误,而不是Windows为我处理它,特别是因为消息的文本不正确(问题不在于程序无法启动,程序运行得非常愉快,它只是无法加载此插件)。
我想避免的是不得不重写具有这些外部依赖关系的插件,使它们自己动态加载任何依赖模块,然后查询任何入口点。
无论如何,我们将非常感激地收到任何建议。
答案 0 :(得分:13)
使用SetErrorMode()。在加载DLL之前将其与SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS
一起使用,并在之后使用0
。
答案 1 :(得分:5)