如何避免“无法加载 DLL”情况

本文关键字:无法加载 DLL 情况 加载 何避免 | 更新日期: 2023-09-27 18:33:04

我正在尝试使用Monogame构建游戏。Monogame使用自己的一堆DLL。但是,其中一个 DLL 内部是对另一个 DLL 的依赖关系(可能不存在,因为它未安装(。

更具体地说,当尝试使用Monogame的DLL的方法/类时

GamePad.GetState(PlayerIndex.One).Buttons.Back

将产生此错误:

无法加载 DLL"xinput1_3.dll":找不到指定的模块。(HRESULT的例外:0x8007007E(

修复此错误并不困难。用户需要安装正确的系统要求。

如何从前端向用户告知这一点?我的目的是通知用户"游戏手柄控制器因此被禁用,因为您的系统上未安装 xxx",同时继续运行游戏 - 因为游戏手柄是可选的。

有没有办法在尝试使用该方法/类之前捕获此问题(即是否有一种方法可以检查此 DLL 是否存在 - 而无需非常具体地说明其位置/文件路径(?

在整个

应用程序周围设置try-catch块是最好的方法吗?

有没有更好的方法来处理(常见?"无法加载 DLL"情况?

我的主要目标是忽略任何DLL依赖问题,因为我计划在没有安装程序的情况下分发此游戏。此外,任何缺少的非游戏破坏 DLL 都应被忽略。

如何避免“无法加载 DLL”情况

一种解决方案可能是在启动期间以编程方式检查所有系统文件夹中是否有所需的 dll,并在缺少它们时提醒用户。

编辑:有一个更好的解决方案,使用LoadLibrary((函数检查,检查系统中是否存在DLL

您可以查看所有 .运行应用之前所需的 DLL。当然,您可以依靠尝试和捕获您从来不知道的DLL。