我在 Steam 上购买了《星露谷》游戏,安装了它,启动了它。什么都没发生 :(...
当我查看事件查看器时,我看到了以下信息:
Application: Stardew Valley.exe Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.BadImageFormatException at
StardewValley.Program.Main(System.String[])
对我来说,这听起来像是一个坏的 dll 或一个错误的 dll 架构,但我还不能找出问题所在。之后:
Faulting application name: Stardew Valley.exe, version: 1.0.5940.30711, time stamp: 0x5705b1ef
Faulting module name: KERNELBASE.dll, version: 10.0.10586.162, time stamp: 0x56cd55ab
Exception code: 0xe0434352
Fault offset: 0x000bdad8
Faulting process id: 0x23d8
Faulting application start time: 0x01d19eee1ec0b80d
Faulting application path: F:\Steam\steamapps\common\Stardew Valley\Stardew Valley.exe
Faulting module path: C:\WINDOWS\SYSTEM32\KERNELBASE.dll
Report Id: b8cdbcca-597d-4eb4-a44c-47f2b8c510a5
Faulting package full name:
Faulting package-relative application ID:
其次是:
Fault bucket 108078241334, type 1
Event Name: APPCRASH
Response: Not available
Cab Id: 0
Problem signature:
P1: Stardew Valley.exe
P2: 1.0.5940.30711
P3: 5705b1ef
P4: KERNELBASE.dll
P5: 10.0.10586.162
P6: 56cd55ab
P7: e0434352
P8: 000bdad8
P9:
P10:
我喜欢自己解决问题,但 6 小时后我就放弃了。我使用 Dependency Walker 来通知我缺少 dll 或不兼容的版本。奇怪的是游戏 exe 是 x86 的,而所有加载的 dll 都是 x64 的。我的妻子也有这个游戏,它在她的机器上运行,但 Dependency Walker 报告没有太大差异。她只得到了几个可用的 dll(我后来复制了它们,但没有帮助)。
这是我尝试过的(中间重新启动过):
- 重新安装游戏(3次)
- 重启
- Steam 文件完整性检查
- 启动外部 steam
- 以管理员身份启动
- 所有兼容模式
- 重新安装 XNA 4.0
- 彻底删除 XNA 4.0 并重新安装
- 证监会/扫描
- dism /在线/清理图像/RestoreHealth
- 在 C 盘而不是 F 盘上安装游戏
- 彻底删除所有 System32/d2*.dll 和 d3*.dll 并重新安装 directx(这损坏了其他一些游戏)
- 更新图形驱动程序
- dxdiag 报告没有问题
- 关机并重新开机
- 将以下(缺失的)dll 放置在 system32/syswow64/game 目录中
- (x86)API-MS-WIN-CORE-APIQUERY-L1-1-0.DLL
- (x86)API-MS-WIN-CORE-APPCOMPAT-L1-1-1.DLL
- (x86)API-MS-WIN-CORE-FIBERS-L1-1-1.DLL
- (x86)API-MS-WIN-CORE-FIBERS-L2-1-1.DLL
- (x86)API-MS-WIN-CORE-PSM-APPNOTIFY-L1-1-0.DLL
- (x86)API-MS-WIN-设备-配置-L1-1-1.DLL
- (x86)API-MS-WIN-MM-MISC-L1-1-1.DLL
- (x86)API-MS-WIN-RTCORE-NTUSER-WINEVENT-L1-1-0.DLL
- (x86)API-MS-WIN-SECURITY-CRYPTOAPI-L1-1-0.DLL
- (x86)EXT-MS-WIN-RTCORE-NTUSER-DPI-L1-1-0.DLL
- (x86)IESHIMS.DLL
- (x64)API-MS-WIN-BASE-UTIL-L1-1-0.DLL
- (x64)API-MS-WIN-CORE-COMM-L1-1-0.DLL
我反编译了该 exe 来查看它的引用,它们是:
- 利德格伦网络
- 微软Xna框架
- 微软.Xna.Framework.游戏
- 微软.Xna.框架.图形
- 微软Xna框架
- mscorlib
- 演示核心
- Steamworks网络
- 系统
- 系统核心
- 系统服务模型
- 系统.Windows.窗体
- 系统 XML
- 平铺
所有这些 dll 均已成功解析。
我还能做些什么来尝试解决这个问题?我将在两个月后重新安装我的系统,这可能会有所帮助,但我认为现在为了 1 个拒绝启动的程序而这样做太激进了。
编辑:
以下是崩溃转储该期限将于 2016 年 4 月 27 日到期。
我还查看了崩溃转储并尝试使用 Visual Studio 2015 对其进行调试。我收到以下错误:未知模块中发生了类型为“System.BadImageFormatException”的未处理异常。
Additional information: Could not load file or assembly 'Microsoft.Xna.Framework.dll' or one of its dependencies. is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)
If there is a handler for this exception, the program may be safely continued.
我不明白这个错误。我已经重新安装了两次了!
但是,当我搜索 dll 时,我发现位于以下位置的多个版本:
- C:\Program 文件(x86)\Microsoft Silverlight\5.1.41212.0
- C:\Program 文件 (x86)\Microsoft SDKs\Windows Phone\v8.1\Tools\MDILXAPCompile\Framework
- C:\Program 文件(x86)\Reference Assemblies\Microsoft\Framework\WindowsPhone\v8.1
- C:\Program 文件(x86)\Microsoft SDKs\Windows Phone\v8.1\Tools\AppDeploy\MdilXapCompilev8.0\Framework
- C:\Program 文件(x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0
- C:\Program 文件(x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86
- C:\Program 文件(x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Xbox360
- C:\Windows\Microsoft.NET\assembly\GAC_32\Microsoft.Xna.Framework\v4.0_4.0.0.0__842cf8be1de50553
当我使用 DotPeek 查看引用时,它说需要这个:C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.dll(存在)。
答案1
我终于解决了这个问题。解决方案如下:
我在 sysWow64 文件夹中有 x64 ,在 system32 文件夹中有X3dAudio_7.dll
x86 。我切换了它们,重新安装了 XNA,一切正常!X3dAudio_7.dll
我在 Dependency Walker 中打开 Microsoft.Xna.Framework.dll 时发现了这一点。我注意到,除此以外,所有引用的 DLL 都是 x64。
这似乎不合逻辑,但如果您安装了 x64 版 Windows,则所有 x64 dll 都会进入 system32 文件夹,而 x86 dll 则会进入 SysWow64 文件夹。
答案2
我本来想添加一条评论,但现在还不能,而且这不太可能起作用,但由于您可能还没有尝试过,所以值得一试。
你可能想要在执行此操作之前卸载游戏,但这实际上取决于你,因为无论如何你似乎对这些东西有相当不错的掌握。
Steam 关闭后
1)开始>运行>%temp%(清除所有垃圾)
2)清除临时文件C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
和
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files
3) 运行 .NET 修复实用程序(并可能将 .NET 更新到最新稳定版本,可能是 4.6.2):https://www.microsoft.com/en-us/download/details.aspx?id=30135
然后也许重新启动并重试,或者重新安装游戏(如果您在执行这些操作之前删除了它)。
编辑:您卸载/重新安装的所有内容,是否同时安装了 x64 和 x86 版本?
似乎还有一些相关的讨论这里
答案3
或者您可以将32位版本的X3dAudio_7.dll放入游戏exe的同一文件夹中。