Wine 找不到 DLL

Wine 找不到 DLL

我目前安装 Wine 时遇到的问题是它找不到启动游戏的 DLL,他是这样说的:

0100:err:module:import_dll Library D3DCOMPILER_43.dll (which is needed by L"B:\\Games\\Game.exe") not found

但我知道 DLL 位于 中wineprefix,唯一的问题是 DLL 都是小写的,如果我将混合大小写名称符号链接到小写名称,它似乎可以工作。奇怪的是,在知道这是区分大小写问题之前,我只是重新启动了系统几次,有时它可以工作,并且区分大小写不是问题,有时则不然,并再次说他可以找不到 DLL。而且它并不总是这样,但我不知道从什么时候开始它像这样(但可能是因为我确实因为错误而再次设置了系统)

我现在设置了一个 Linux 内核版本 5.2 引入的不区分大小写的文件系统,但我想知道您是否可以以正常方式修复此问题。

答案1

酒是不区分大小写在打开文件(包括 DLL)方面。

我可以有 99.99% 的信心说您没有安装这个库,或者它不是 Wine 期望找到它的地方。

请使用winetricks它来启用它 - 它通常可以完美地工作。 AFAIK Ubuntu 及其衍生产品附带了这个软件包,但我仍然强烈建议直接从 GIT 下载它:https://github.com/Winetricks/winetricks

我现在设置了一个 Linux 内核版本 5.2 引入的不区分大小写的文件系统,但我想知道您是否可以以正常方式修复此问题。

Wine 从来不需要这个功能,它使用自己的文件打开例程来打开文件。您正在尝试解决与 Wine 无关的问题。


清除您的 wineprefix ( $HOME/.wine) 或创建一个新的 ( WINEPREFIX="$HOME/.wine123" wine app.exe)。我相信问题出在你这边。当您不断弄乱默认的 wine 前缀时,有时会出现问题 - 就此而言,建议为单独的应用程序使用单独的前缀,以消除任何可能的问题。

答案2

当我将船从 Windows 切换到 Linux 进行游戏时,我与 Windows 共享的 NTFS 驱动器遇到了这个问题。

质子常见问题解答NTFS 读取问题

将无法启动的游戏移至 ext4 分区后,问题就消失了。

(在 NTFS 上测试了一款游戏,在 ext4 上测试了一款游戏。它们都遇到了这个问题,具体取决于重新启动。我通过重新启动并在 NTFS 上测试游戏重现了该问题。当该游戏未启动时,我在 ext4 上启动了游戏。在发生问题的两次重新启动中,每次尝试都启动了 100%。在另一次重新启动后,我在 NTFS 驱动器上遇到了游戏问题,即使不需要重新启动,它也能启动。)

常见问题解答提出了一个略有不同的修复方案,但lowntfs我不喜欢使用它。

答案3

我不是葡萄酒专家,所以不确定解决此类问题的“正常”方法是什么。但“传统”方法是仅创建指向具有不同名称的文件的链接(符号或硬链接)。

cd /opt/wine-stable/lib/wine/
ln -s d3dcompiler_43.dll D3DCOMPILER_43.dll

绝对不是一个理想的解决方案,但作为一种快速而肮脏的修复,它通常是有效的。

相关内容