Errore di runtime (caricamento DLL) con applicazioni Win32 sul sistema X64, durante la compilazione di 0K

StackOverflow https://stackoverflow.com/questions/5372565

Domanda

Inizialmente ho progettato un'applicazione Win32 su Win7 32Bits, con VC9.0. Di recente ho aggiornato a Win7 64 bit e ho provato a costruire+eseguire l'applicazione precedente.

Building Runs Fine (win32 Applicazione), ma in fase di esecuzione ricevo l'errore [...] è uscito con il codice -1073741701 (0xc000007b)."

Immagino che questo risultato del caricamento di una versione a 64 bit di una DLL [prevista] 32bit.

Dipendenze specifiche per questo progetto sono: sdl.lib sdlmain.lib sdl_ttf.lib OpenGl32.lib Glu32.lib wininet.lib

SDL e SDL_TTF sono solo in versione 32Bits. Presumo che Visual Studio sia abbastanza intelligente da recuperare i file OpenGL e Glu Lib in Syswow64 poiché richiedo un'applicazione Win32.

Potrebbe essere a causa di Wininet? O ho commesso un errore?

Grazie,

È stato utile?

Soluzione

Sembra che tu stia caricando una DLL a 64 bit in un processo a 32 bit o viceversa. Ecco come avrei monitorato la DLL offensiva.

Il primo passo è eseguire Dumpbin.exe (utilizzare un prompt dei comandi VS per metterlo sul percorso) sull'eseguibile per garantire che l'architettura sia ciò che ti aspetti: dumpbin.exe /headers foo.exe. Nell'output dell'intestazione del file, è necessario vedere un valore "macchina" di "x86" o "x64". Nell'output di intestazione opzionale, dovresti vedere una magia di "pe32" (per x86) o "pe32+" (per x64).

Il prossimo passo è eseguire il Walker di dipendenza appropriato, disponibile a www.dipendencywalker.com, a seconda dell'architettura (x86 o x64) dell'eseguibile. Questo strumento dovrebbe dirti se individua una dipendenza dai percorsi di ricerca che non sono della stessa architettura.

Se la dipendenza Walker trova un problema, la correzione sarebbe quella di sostituire la libreria offensiva con una libreria della stessa architettura o assicurarsi che la libreria corretta si trovi prima della libreria errata in base ai percorsi di ricerca.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top