J'ai une application composée de nombreux projets dll et exe. Je porte sur une version 64 bits et pratiquement tout fonctionne bien. Cependant, j'ai un projet exe qui ne se construira pas correctement dans la configuration 64 bits. La chose étrange est que cela ne se construira pas à partir de la commande de construction IDE. Si j'ouvre une fenêtre de commande VS 64 bits et que je la compile avec msbuild, elle se construit avec succès. J'ai examiné d'autres questions et réponses similaires qui se réfèrent généralement à une inclusion de windows.h supplémentaire (ou manquante), mais il est difficile de déterminer si c'est la même chose. J'ai essayé différentes combinaisons d'inclus, mais je ne vois pas de problème clair.Aucune erreur d'architecture cible avec la version 64 bits de Visual Studio 2010 IDE
je peux construire le projet dans le VS IDE comme exe 32 bits je ne peux pas générer le projet dans le VS IDE comme exe 64 bits je peux construire le projet dans une fenêtre de commande de 64 bits en tant que un exe 64 bits
J'ai _WIN64 et _AMD64 définis comme définitions de préprocesseur.
Si activer l'option du compilateur de montrer comprend, je vois ceci:
1> Note: including file: c:\dev\projects\myapp\myproject.root\myproject\stdafx.h 1> Note: including file: c:\dev\projects\myapp\myproject.root\myproject\targetver.h 1> Note: including file: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\SDKDDKVer.h 1> Note: including file: c:\dev\projects\myapp\myproject.root\myproject\resource.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlbase.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\atldef.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlrc.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\errno.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\sal.h 1> Note: including file: c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(27): error C2371: 'size_t' : redefinition; different basic types 1> predefined C++ types (compiler internal)(19) : see declaration of 'size_t' 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\vadefs.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\malloc.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdlib.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\limits.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdbg.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h 1> Note: including file: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winsock2.h 1> Note: including file: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\windows.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\excpt.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\stdarg.h 1> Note: including file: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\windef.h 1> Note: including file: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ctype.h 1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h 1> Note: including file: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\specstrings.h 1> Note: including file: c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sal_supp.h 1> Note: including file: c:\program files (x86)\microsoft sdks\windows\v7.0a\include\specstrings_supp.h 1> Note: including file: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\specstrings_strict.h 1> Note: including file: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\specstrings_undef.h 1> Note: including file: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h 1> Note: including file: c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sdv_driverspecs.h 1> Note: including file: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\kernelspecs.h 1>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winnt.h(135): fatal error C1189: #error : "No Target Architecture"
Toutes les suggestions?
Il n'est pas nécessaire de définir '_WIN64' ou' _AMD64' il vous suffit de définir la plate-forme du projet sur x64 et la machine cible du linker sur la machine64 dans les paramètres du projet. – VTT
Intéressant. J'ai enlevé ces définitions et maintenant tout compile correctement mais je reçois une erreur de lien: "erreur fatale LNK1112: le type de machine de module 'X86' est en conflit avec le type de machine cible 'x64'". J'ai le 'x64' comme plate-forme et les paramètres de l'éditeur de liens sont définis sur le type de machine X64. – Ken
Peut-être que vous avez des paramètres différents pour une unité de traduction ou quelque chose? Pour l'en-tête précompilé .cpp par exemple? – VTT