Comment résoudre le type de machine du module 'X86' en conflit avec le type de machine cible 'x64' Visual Studio
Je suis la compilation bibliothèque Openssl, que j'ai besoin de l'utiliser dans un script python. Je suis à l'aide de Visual Studio 2015 Développeur Invite de Commande. Ma machine est sous Windows 7 64 bits.
Quand je tape la commande: nmake -f ms\ntdll.mak
J'obtiens cette erreur:
tmp32dll\uplink.obj : fatal error LNK1112: module machine type 'X86' conflicts w
ith target machine type 'x64'
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0
\VC\BIN\amd64_arm\link.EXE"' : return code '0x458'
Stop.
J'ai cherché et plusieurs solutions pour un même problème suggérons de modifier le projet de plate-forme à partir des paramètres du projet. Je n'ai pas de VS projet. Je suis en cours d'exécution toutes ces commandes pour compiler la bibliothèque OpenSSL. Je suis l'aide de la VS de commande.
S'il vous plaît, m'aider.
source d'informationauteur user2192774
Vous devez vous connecter pour publier un commentaire.
J'ai rencontré le même problème avec VS2013.
Il y a 2 approches dont je suis tombé sur ce qui peut ou peut ne pas être utile dans votre cas:
LA PREMIÈRE APPROCHE
(Ne peut être pertinents pour les versions VS2013 et ci-dessus)
Ouvrez le VS2015 x64 Outils Natifs Invite de Commande et exécutez la commande.
Les deux outils peuvent être trouvés dans le dossier:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\Raccourcis
LA DEUXIÈME APPROCHE
(Ne peut être pertinents pour les versions antérieures à VS2013)
Dans le développement de l'Invite de Commande de VS2015 vous pouvez modifier le compilateur plate-forme cible en exécutant la commande suivante
Pour VS 2017
Cette erreur signifie que
tmp32dll\uplink.obj
est un binaire 32 bits alors que l'éditeur de liens il devrait être 64 bits comme c'est le ciblage de 64 bits.Regarde comme vous avez besoin de re-compiler en 64 bits, ou tout simplement effectuer une reconstruction (ou de supprimer toutes les
*.obj
ou même de l'ensemble de binaires répertoire de sortie)Cela peut se produire si le processus de construction est interrompue, puis vous modifiez la plate-forme cible, puis vous répétez le processus de construction de manière incrémentielle. 32-bits ne se mélangent pas avec la version 64 bits, il est donc complètement d'une façon ou de l'autre.
Cette erreur vient parce qu'un composant spécifique de la construction est compilé en tant que binaire x86 au lieu de 64 bits (la machine cible (architecture) - pour l'essentiel que vous donnez l'éditeur de liens d'un carré de pièce de puzzle et de lui dire de s'insérer dans un trou circulaire.
Dans votre cas:
Vous regardez le nom du fichier obj qui est à l'origine de l'erreur: liaison montante.obj, de sorte que vous regardez uplink.cpp (ou de liaison montante.asm ou de liaison montante.quoi que ce soit) et d'examiner la manière dont il 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.
Dans mon cas, j'ai essayé de compiler 7zip en x64 à l'aide de visual studio 8 et tout ce qui était en train de rassembler sauf pour l'assemblage des macros (asm), qui compilait en x86 et de briser le processus de construction. J'ai trouvé que VS a essayé de l'utiliser ml.exe pour les compiler au lieu de ml64.exe en regardant l'asm de la feuille de propriétés. Dans mon cas, changé l'appel à ml64.exe pour se débarrasser de cette erreur (j'ai aussi dû modifier l'asm fichiers 64 bits uniquement pour se débarrasser de tous les x86 code, mais c'est une autre histoire).