Как исправить BadImageFormatException при запуске приложения?

3586
Mixxiphoid

Я купил игру Stardew Valley на 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 или несовместимых версиях. Одна из странных вещей заключается в том, что исполняемый файл игры - x86, а все загруженные dll - x64. У моей жены тоже есть игра, и она работает на ее компьютере, однако Dependency Walker не сообщил о каких-либо больших различиях. Она получила только несколько доступных длл (которые я потом скопировал, но не помогло).

Вот что я попробовал (с перезагрузками между ними):

  • Переустановите игру (3 раза)
  • перезагружать
  • Проверка целостности файла Steam
  • Начать вне пара
  • Начать с правами администратора
  • Все режимы совместимости
  • Переустановка XNA 4.0
  • Полностью удалил XNA 4.0 и переустановил
  • SFC / SCANNOW
  • dism / Online / Cleanup-Image / RestoreHealth
  • Установка на игру на диске C вместо диска F
  • Полное удаление всех System32 / d2 * .dll и d3 * .dll и переустановка directx (что сломало несколько других игр)
  • Обновленные графические драйверы
  • dxdiag сообщает о проблемах
  • выключить и снова включить
  • размещение следующих (отсутствующих) dll в каталоге system32 / syswow64 / game
    • (X86) API-МС-WIN-ОСНОВНОЙ-APIQUERY-L1-1-0.DLL
    • (X86) API-МС-WIN-ОСНОВНОЙ-AppCompat-L1-1-1.DLL
    • (x86) API-MS-WIN-Core-ВОЛОКНА-L1-1-1.DLL
    • (x86) API-MS-WIN-Core-ВОЛОКНА-L2-1-1.DLL
    • (X86) API-МС-WIN-ОСНОВНОЙ-ПСМ-APPNOTIFY-L1-1-0.DLL
    • (X86) API-MS-WIN-УСТРОЙСТВА-CONFIG-L1-1-1.DLL
    • (X86) API-МС-WIN-ММ-MISC-L1-1-1.DLL
    • (X86) API-МС-WIN-RTCore-NTUSER-WinEvent-L1-1-0.DLL
    • (X86) API-МС-WIN-СЕКЬЮРИТИ-CryptoAPI-L1-1-0.DLL
    • (X 86) EXT-МС-WIN-RTCore-NTUSER-DPI-L1-1-0.DLL
    • (X86) ieshims.dll
    • (64) API-МС-WIN-BASE-UTIL-L1-1-0.DLL
    • (64) API-МС-WIN-ОСНОВНОЙ-Comm-L1-1-0.DLL

Я декомпилировал exe, чтобы посмотреть на его ссылки, которые:

  • Lidgren.Network
  • Microsoft.Xna.Framework
  • Microsoft.Xna.Framework.Game
  • Microsoft.Xna.Framework.Graphics
  • Microsoft.Xna.Framework.Xact
  • mscorlib
  • PresentationCore
  • Steamworks.NET
  • система
  • System.Core
  • System.ServiceModel
  • System.Windows.Forms
  • System.Xml
  • xTile

Все эти DLL были успешно решены.
Что еще я могу сделать, чтобы попытаться решить эту проблему? Я переустановлю свою систему через два месяца, что может помочь, но я думаю, что слишком радикально делать это сейчас ради одной программы, которая отказывается запускаться.

РЕДАКТИРОВАТЬ:
Вот аварийный дамп, срок действия которого истекает 27-04-2016.

Я также посмотрел на аварийный дамп и попытался отладить его с помощью 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 Files (x86) \ Microsoft Silverlight \ 5.1.41212.0
  • C: \ Program Files (x86) \ Microsoft SDK \ Windows Phone \ v8.1 \ Tools \ MDILXAPCompile \ Framework
  • C: \ Program Files (x86) \ Справочные сборки \ Microsoft \ Framework \ WindowsPhone \ v8.1
  • C: \ Program Files (x86) \ Microsoft SDK \ Windows Phone \ v8.1 \ Tools \ AppDeploy \ MdilXapCompilev8.0 \ Framework
  • C: \ Program Files (x86) \ Справочные сборки \ Microsoft \ Framework \ Silverlight \ v5.0
  • C: \ Program Files (x86) \ Microsoft XNA \ XNA Game Studio \ v4.0 \ References \ Windows \ x86
  • C: \ Program Files (x86) \ Microsoft XNA \ XNA Game Studio \ v4.0 \ References \ Xbox360
  • C: \ Windows \ Microsoft.NET \ сборка \ 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
захватить аварийный дамп и поделиться сжатым dmp (как 7z / RAR): http://msdn.microsoft.com/en-us/library/bb787181%28VS.85%29.aspx magicandre1981 8 лет назад 0
@ magicandre1981 Я добавил аварийный дамп Mixxiphoid 8 лет назад 0

3 ответа на вопрос

3
Mixxiphoid

I finally fixed it. Here is the solution:

I had the x64 X3dAudio_7.dll in the sysWow64 folder and the x86 X3dAudio_7.dll in the system32 folder. I switched them, reinstalled XNA and everything worked!

I found this out by opening Microsoft.Xna.Framework.dll in Dependency Walker. I noticed that all refered DLL's were x64 except for this one.

It may not seem logical but, if you have a x64 installation of windows, all x64 dll's go into the system32 folder and the x86 dll's into the SysWow64 folder.

хорошо, dmp показывает только ** Не удалось загрузить файл или сборку «Microsoft.Xna.Framework.dll» или одну из ее зависимостей. не является допустимым приложением Win32 **, поэтому я бы также предложил использовать зависит от DLL, чтобы увидеть, что происходит magicandre1981 8 лет назад 0
@ magicandre1981 и что я сделал :), большое спасибо! Mixxiphoid 8 лет назад 0
1
pay

I was going to just add a comment but can't yet, and this is unlikely to work anyway, but it's worth a shot since you probably haven't tried it.

You might want to uninstall the game before doing this, but it's up to you really as you seem to have a pretty decent grasp on this stuff anyway.

With Steam closed

1) Start > Run > %temp% (clear all that junk out)

2) Clear out the temporary files in C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files and C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files

3) Run the .NET repair utility (and possibly update .NET to the latest stable version which might be 4.6.2): https://www.microsoft.com/en-us/download/details.aspx?id=30135

Then maybe reboot and try again, or reinstall the game if you removed it before doing that stuff.

Edit: and all of that stuff you've uninstalled/reinstalled, did you install both the x64 and x86 versions?

Also seems to be some relevant discussions here

Я уже все перепробовал по ссылке на steam форум, но все равно спасибо :). Я попробую ваше предложение на предмет ремонта .NET. Mixxiphoid 8 лет назад 0
0
pitsch

или вы можете поместить 32-битную версию X3dAudio_7.dll в ту же папку с игрой exe.