加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 尝试在缺少依赖DLL时使用LoadLibrary在Windows上加载DLL

发布时间:2020-12-16 05:21:20 所属栏目:百科 来源:网络整理
导读:我有一个在 Windows上使用LoadLibrary来动态加载插件的应用程序.但是一些插件还有其他依赖的DLL,如数据库客户机DLL. 当您尝试加载这样一个DLL并且其中一个依赖的DLL不存在时,您会得到一个讨厌的Windows对话框: “程序无法启动,因为您的计算机上缺少xxx.ddl,
我有一个在 Windows上使用LoadLibrary来动态加载插件的应用程序.但是一些插件还有其他依赖的DLL,如数据库客户机DLL.
当您尝试加载这样一个DLL并且其中一个依赖的DLL不存在时,您会得到一个讨厌的Windows对话框:

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

有没有什么简单的方法来避免这个对话?我希望有人可以使用LoadLibraryEx并传递一个标志,说“不要给我这个烦人的对话框”,但它似乎不是这样.

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

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

无论如何,任何建议都将得到感激之情.

解决方法

使用 SetErrorMode().将其用于SEM_NOOPENFILEERRORBOX |加载DLL之前的SEM_FAILCRITICALERRORS,然后加上0.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读