Como corrigir o BadImageFormatException na inicialização do aplicativo?

1

Comprei o jogo Stardew Valley a vapor, instalei-o, lancei-o. Nada aconteceu: (...
Quando dei uma olhada no visualizador de eventos, vi as seguintes informações:

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[])

Para mim, isso soa como uma dll ruim ou uma arquitetura incorreta para uma dll, mas não consegui identificar qual é o problema. Logo depois disso:

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: 

Seguido por:

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: 

Eu gosto de consertar meus próprios problemas, mas depois de 6 horas desisto. Eu usei Dependency Walker para me informar sobre a falta de dll ou versões incompatíveis. Uma das coisas estranhas é que o exe jogo é x86 e todos os dll carregados são x64. Minha esposa também tem o jogo e funciona em sua máquina, no entanto Dependency Walker não relatou grandes diferenças. Ela só tem mais algumas dll disponíveis (que eu copiei depois, mas não ajudou).

Aqui está o que eu tentei (com reinicializações no meio):

  • Reinstale o jogo (3 vezes)
  • Reiniciar
  • Verificação de integridade do arquivo do Steam
  • Começar a usar o vapor
  • Iniciar como administrador
  • todos os modos de compatibilidade
  • Reinstalando o XNA 4.0
  • Removeu completamente o XNA 4.0 e reinstalou
  • sfc / scannow
  • dism / Online / Limpeza de imagem / RestoreHealth
  • Instalando no jogo na unidade C em vez da unidade F
  • Remoção completa de todos os System32 / d2 * .dll e d3 * .dll e reinstalação do directx (que quebrou alguns outros jogos)
  • Drivers gráficos atualizados
  • o dxdiag não relata problemas
  • desligue e ligue novamente
  • colocando as seguintes DLLs (ausentes) no diretório 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-FIBRAS-L1-1-1.DLL
    • (x86) API-MS-WIN-CORE-FIBRAS-L2-1-1.DLL
    • (x86) API-MS-WIN-CORE-PSM-ANOTIFICAÇÃO-L1-1-0.DLL
    • (x86) API-MS-WIN-DEVICES-CONFIG-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-SEGURANÇA-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

Eu descompilei o exe para ver suas referências, que são:

  • Lidgren.Network
  • Microsoft.Xna.Framework
  • Microsoft.Xna.Framework.Game
  • Microsoft.Xna.Framework.Graphics
  • Microsoft.Xna.Framework.Xact
  • mscorlib
  • PresentationCore
  • Steamworks.NET
  • Sistema
  • System.Core
  • System.ServiceModel
  • System.Windows.Forms
  • System.Xml
  • xTile

Todas essas DLLs foram resolvidas com sucesso.
O que mais posso fazer para corrigir esse problema? Vou reinstalar meu sistema daqui a dois meses, o que pode ajudar, mas acho que é muito radical fazê-lo agora por causa de um programa que se recusa a lançar.

EDIT: Aqui está um despejo de memória que expira em 27-04-2016.

Também examinei o despejo de memória e tentei depurá-lo com o Visual Studio 2015. Estou recebendo o seguinte erro: Uma exceção sem tratamento do tipo 'System.BadImageFormatException' ocorreu no Unknown Module.

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.

Eu não entendo esse erro. Já reinstalei duas vezes!
No entanto, quando procuro a dll, encontro várias versões localizadas nos seguintes locais:

  • C: \ Arquivos de programas (x86) \ Microsoft Silverlight \ 5.1.41212.0
  • C: \ Arquivos de programas (x86) \ Microsoft SDKs \ Windows Phone \ v8.1 \ Ferramentas \ MDILXAPCompile \ Framework
  • C: \ Arquivos de Programas (x86) \ Assemblies de Referência \ Microsoft \ Framework \ WindowsPhone \ v8.1
  • C: \ Arquivos de programas (x86) \ Microsoft SDKs \ Windows Phone \ v8.1 \ Ferramentas \ AppDeploy \ MdilXapCompilev8.0 \ Framework
  • C: \ Arquivos de Programas (x86) \ Assemblies de Referência \ Microsoft \ Framework \ Silverlight \ v5.0
  • C: \ Arquivos de programas (x86) \ Microsoft XNA \ XNA Studio \ v4.0 \ References \ Windows \ x86
  • C: \ Arquivos de programas (x86) \ Microsoft XNA \ XNA Studio \ v4.0 \ References \ Xbox360
  • C: \ Windows \ Microsoft.NET \ assembly \ GAC_32 \ Microsoft.Xna.Framework \ v4.0_4.0.0.0__842cf8be1de50553

Quando eu olho para as referências com DotPeek ele diz que leva um presente: C: \ Arquivos de Programas (x86) \ Microsoft XNA \ XNA Studio Studio \ v4.0 \ References \ Windows \ x86 \ Microsoft.Xna.Framework. dll (que existe).

    
por Mixxiphoid 25.04.2016 / 14:59

3 respostas

3

Eu finalmente consertei. Aqui está a solução:

Eu tinha x64 X3dAudio_7.dll na pasta sysWow64 e x86 X3dAudio_7.dll na pasta system32. Troquei eles, reinstalei o XNA e deu tudo certo!

Eu descobri isso abrindo Microsoft.Xna.Framework.dll no Dependency Walker. Notei que todas as DLLs referenciadas eram x64, exceto por essa.

Pode não parecer lógico, mas, se você tiver uma instalação x64 do Windows, todas as dlls do x64 vão para a pasta system32 e as DLLs do x86 para a pasta SysWow64.

    
por 26.04.2016 / 00:13
1

Eu adicionaria um comentário, mas ainda não posso, e é improvável que isso funcione de qualquer maneira, mas vale a pena tentar, já que você provavelmente não tentou.

Você pode querer desinstalar o jogo antes de fazer isso, mas cabe a você realmente, já que parece ter uma boa compreensão sobre essas coisas.

Com o Steam fechado

1) Iniciar > Executar > % temp% (limpe todo esse lixo)

2) Limpe os arquivos temporários em C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files e C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files

3) Execute o utilitário de reparo do .NET (e possivelmente atualize o .NET para a versão estável mais recente que pode ser 4.6.2): link

Então talvez reinicie e tente novamente, ou reinstale o jogo se você o removeu antes de fazer isso.

Editar: e todas essas coisas que você desinstalou / reinstalou, você instalou as versões x64 e x86?

Também parece haver algumas discussões relevantes aqui

    
por 25.04.2016 / 22:43
0

ou você pode colocar a versão de 32 bits do X3dAudio_7.dll na mesma pasta do exe do jogo.

    
por 12.07.2018 / 17:22