erreur fatale LNK1112: module type de machine 'X86' conflits avec la cible type de machine AMD64
Je suis avec VS 2003 .Net sur 32 bits, XP OS. J'ai également installé "Microsoft Platform SDK" sur ma machine. Puis-je construire vc++ de l'application (fichiers binaires) ciblés pour la version 64 bits de l'OS?
Je suis à l'aide de la suite des options de projet :
Name="VCLinkerTool"
AdditionalOptions="/machine:AMD64 bufferoverflowU.lib"
OutputFile="\bin\Release\MM64.dll"
LinkIncremental="1"
SuppressStartupBanner="TRUE"
AdditionalLibraryDirectories=""C:\Program Files\Microsoft Platform SDK\Lib\AMD64""
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="\bin\Release\MM64.pdb"
GenerateMapFile="TRUE"
MapFileName="\bin\Release\MM64.map"
MapExports="TRUE"
MapLines="TRUE"
OptimizeReferences="2"
EnableCOMDATFolding="2"
ImportLibrary=".\Release/MM64.lib"
TargetMachine="0"/>
J'obtiens l'erreur suivante:
fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'AMD64'
Dois-je créer un projet sur une version 64 bits de l'OS ou j'ai besoin de changer les paramètres de projet pour résoudre cette erreur.
Merci de m'aider à résoudre ce problème.
OriginalL'auteur KK. | 2010-04-01
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème aujourd'hui, voici comment je l'ai résolu (dans Visual Studio 2008):
Allé les Propriétés du Projet -> Linker -> en Ligne de Commande -> Options Supplémentaires et retiré l' /MACHINE:I386 à partir de l'éditeur de liens à d'autres options.
Espère que cela aide
OriginalL'auteur Fabio de Miranda
Avoir le même problème dans VS2008. Ma solution a été de changer de solution de plate-forme située dans le Build -> Gestionnaire de Configuration et la création d'une nouvelle plate-forme de solution à l'aide de l'x64 et copuing les paramètres de Win32. Cela m'a permis d'utiliser le pré-construire des bibliothèques 32 bits dans la version 64 bits de l'OS.
OriginalL'auteur Ba.
Pour la version 64 bits de Windows utilisateurs:
J'ai eu le même problème aujourd'hui, voici comment je l'ai résolu (dans Visual Studio 2008): je suis allé à l':
et ajouté le
/MACHINE:I364
à partir de l'éditeur de liens à d'autres options.Cela a bien fonctionné pour moi.
OriginalL'auteur user2021381
J'ai fait face à d'erreur ci-dessus lorsque j'ai essayé de construire ma bibliothèque personnalisée pour ARM64 dans Visual Studio 2017. Et ma machine cible était déjà ARM64 comme prévu.
Apparemment, le problème a été en ARM64 compilateur, ce qui n'a pas été installé(bien que j'ai pu mener à construire dans ARM64). Je l'ai installé en exécutant Visual Studio Installer
Individual Components -> Visual C++ compiler and libraries for ARM64
Ensuite, j'ai eu
error MSB8022: Compiling Desktop applications for the ARM platform is not supported
.Il a été résolu par l'ajout d'
dans mon fichier de projet.
Après tout ce qui précède, je pouvais succefully construire mon projet en ARM64.
Espère que ce sera utile.
OriginalL'auteur miradham
Cette erreur vient parce que quelque chose en vous de construire est en cours d'élaboration dans le mauvais architecture (dire qu'un x86 binaire lorsque tout le reste est de 64 bits). L'éditeur de liens panique et ne sait pas quoi faire avec elle, de sorte qu'il les pauses de votre build.
Je peux parler de votre problème parce que le message d'erreur que vous avez cité est incomplète. Habituellement, il va quelque chose comme ceci:
Vous regardez le nom du fichier obj et vous allez trouver la racine de votre problème. Quelle que soit obj est dans la liste, ils ont une sorte de code source analogique avec le même nom. Avoir un coup d'oeil et voir comment elle est en cours d'élaboration. Habituellement, ce genre de choses est automatisé VS, mais parfois il y a des étapes de génération qui ont été ajoutés par le développeur. Inspecter la coutume, pré - et post - générer des événements pour voir si un x86 outil est utilisé pour l'assemblage. La feuille de propriétés dans VS2010+ sera spécifique à l'obj et de la plate-forme de sorte que vous pouvez inspecter la bibliothèque répertoires utilisés pour vérifier qu'ils ne sont pas de 32 bits.
OriginalL'auteur