Erreur d'exécution (dll de chargement) avec win32 applications sur le système x64, lors de la compilation 0K

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

Question

conçu à l'origine une application win32 32bits win7, avec VC9.0. J'ai récemment amélioré à win7 64 bits, et a essayé de construire + exécuter l'application précédente.

Immeuble fonctionne très bien (application win32), mais sur l'exécution je reçois l'erreur "[...] a sorti avec le code -1073741701 (0xc000007b)."

Je suppose que ce résultat du chargement d'une version 64bits d'un [destiné] 32bits dll.

dépendances spécifiques pour ce projet sont les suivants: SDL.lib SDLmain.lib SDL_ttf.lib opengl32.lib glu32.lib wininet.lib

SDL et SDL_ttf ne sont que dans la version 32bits. Je suppose que Visual Studio est assez intelligent pour chercher les opengl et glu fichiers lib dans \ syswow64 que je demande une application win32.

Se pourrait-il être à cause de wininet? Ou ai-je fait une erreur?

Merci,

Était-ce utile?

La solution

Il semble que vous chargez une DLL 64 bits dans un processus 32 bits ou vice-versa. Voici comment je vaquer à traquer la DLL incriminée.

La première étape consiste à exécuter Dumpbin.exe (utiliser une commande VS invite pour obtenir sur le PATH) sur l'exécutable pour assurer l'architecture est ce que vous attendez: dumpbin.exe /headers foo.exe. Dans la sortie d'en-tête de fichier, vous devriez voir une « machine » valeur « x86 » ou « x64 ». Dans la sortie d'en-tête en option, vous devriez voir une magie de "PE32" (pour x86) ou "PE32 +" (pour x64).

L'étape suivante consiste à exécuter le marcheur dépendance appropriée, disponible à l'adresse www.dependencywalker.com , en fonction de l'architecture (x86 ou x64 ) de l'exécutable. Cet outil devrait vous dire si elle localise une dépendance sur les chemins de recherche qui ne sont pas de la même architecture.

Si walker dépendances trouve un problème, le correctif serait alors de remplacer la bibliothèque offenser avec une bibliothèque de la même architecture ou d'assurer la bibliothèque correcte est située avant la bibliothèque incorrecte basée sur des chemins de recherche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top