多年来我在Windows上部署了许多游戏,并且总是在游戏的文件夹中随游戏一起发送必要的SDL.dll。
这一直很好,并且继续为99%以上的人工作。
但是,我开始看到一些用户报告“代码执行无法继续,因为找不到SDL.dll”。它们似乎都在Windows 10上。并且他们确认DLL确实在游戏文件夹中应该是,并且它们直接从文件夹内部运行游戏,而不是通过破坏工作目录的快捷方式
我也有其他没有此问题的Windows 10用户的报告。
我做了一些研究,发现这种错误可能会产生误导,如果DLL本身加载了另一个未找到的系统DLL,则可能会触发。
我在EXE上使用了DependencyWalker,发现SDL.dll取决于:
ADVAPI32.DLL
GDI32.DLL
KERNEL32.DLL
NTDL.DLL
MSVCRT.DLL
USER32.DLL
WINMM.DLL
那些看起来都很标准。出于某种原因,某些Windows 10安装会丢失它们吗?
其他想法是Windows 10正在转向已签名的DLL要求(只是猜测),或者Windows 10处理库加载路径的方式已经发生变化。
但同样,这适用于Windows 10上的其他人。
其他细节:DLL和EXE都是32位。有问题的系统很可能是64位。
答案 0 :(得分:2)
在这种情况下,结果证明这是一个非常愚蠢的最终用户错误。
我在这里回答它,以防万一其他人遇到它。
当用户双击ZIP文件时,它就像他们打开了一个文件夹并正在查看文件一样。
他们甚至可以从这个ZIP浏览视图中运行游戏。
但当然,Windows无法找到ZIP文件中的DLL。
因此,Windows上的这种行为对最终用户来说非常混乱。解决方案是在运行游戏之前先提取ZIP。