Application créée dans Visual Studio sur XP 32 accidents 64 sur la violation d'accès. Recompiler 64 environnement peu pour trouver bug, fonctionne très bien. Quelle?

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

Question

J'ai développé sur Visual Studio 2008. Windows XP Je suppose que la construction est mon application C ++ en mode 32 bits. Quand je lance le programme sur ma nouvelle boîte de Windows 7 64 bits, il obtient à mi-chemin à travers le chargement d'une lance alors une erreur de violation d'accès. Donc, je charge tout mon outil de développement et recompilé le projet sur Windows 7 pour trouver le site de l'accident, mais il fonctionne parfaitement! Quelle? Comment puis-je faire mon travail d'application sur x64? Dois-je libérer deux versions séparées? Je sais que je peux cibler 64 bits, mais je n'aime pas deux executables séparés. Je l'ai cherché, mais continue à obtenir la solution à deux ou version tout .net. Ceci est un ++ natif C. est-il un drapeau x86 quelque part?

Était-ce utile?

La solution

"Dois-je libérer deux versions séparées?" Cela dépend de ce que votre application fait. La majorité des applications 32bit fonctionne très bien dans WoW Mode.

"est-il un drapeau x86 quelque part?" Ouaip. Ouvrez le gestionnaire de configuration (Alt-B, O) et vous verrez probablement un win32 dans la sélection de la plate-forme.

Pourquoi votre application se bloque va prendre un certain débogage. Vous devriez être en mesure de joindre le débogueur à la version 32 bits du système d'exploitation 64 bits.

Autres conseils

Avez-vous envisagé la possibilité que vous pourriez être bousiller la mémoire? De la façon que l'application arrive à être chargé en mémoire, il se peut que l'application 32 bits sur Windows 32 bits et l'application 64 bits sur Windows 64 bits « avoir de la chance », à savoir aucun emplacement de mémoire importantes sont écrasées , tandis que l'application 32 bits sur 64 bits Windows est moins de chance et se bloque.

Pour savoir si vous bousiller en effet mémoire, vous pouvez utiliser des outils tels que Purify et Valgrind .

Comme nous l'avons dit les réponses des autres, il est très probable que l'application a des bugs qui sont cachés dans un environnement. Un bon outil qui a un faible coût d'entrée en termes de courbe d'apprentissage est de Microsoft vérifieur . Qu'avec les peuvent fournir un très bon départ. Jetez un oeil à l'utilitaire gflags.

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