c ++ - Visual Studio Command Compiler Forces 64 Bit Kompilere

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at bygge en eksekverbar og nogle tilknyttede DLL'er i Windows VS Command Prompt. Projektet leveres med en scons-fil, så jeg skriver simpelthen scons i en VS Cmd Prompt.


Den eksekverbare bliver bygget inde i en 'x86' VS Cmd Prompt. Men når kørslen er kørslen, er den ikke 32 bit (bekræftet med Task Manager.) Min kollega bygger det samme præcise projekt på sin 64 bit maskine ved hjælp af scons filen, og hans eksekverbare er 32 bit på min computer. (bekræftet med Task Manager igen)


Dll'erne bliver lastet af en 32 bit JVM, og de kaster en fejl, da de er 64 bit. Mine kollegaer dll'er gør det ikke.


Vi kan ikke finde ud af, hvorfor min computer tvinger en 64 bit opbygning i 'x86' VS-miljøet. Har nogen nogen forslag?


P. S. - Jeg har MS VS 2010 og han har MS VS 2010 Express.


P.S.S. - Jeg har 64 bit python, og dermed er min scons også 64 bit. Det gør dog også min kollega.

Bedste reference


Scons ville normalt bestemme, hvilken værktøjskæde (dvs. kompilator) at bruge (hvis du ikke udtrykker det eksplicit) baseret på det, det kan finde installeret.


En Visual Studio 2010 Express kan kun opbygge 32-bit binære filer - selv på en 64-bit Windows - så det er hvad Scons ville gøre. Med en Visual Studio 2010 'non-express', hvor både 32- og 64-bit kompilere er tilgængelige, ville Scons formodentlig gå til en 64-bit build på en 64-bit Windows.


For at angive en 32- eller 64-bit bygning af et Scons-projekt, kan du indstille TARGET\_ARCH til henholdsvis 'x86' eller 'x86\_64'. Se også Scons Construction Variables. [5]

Andre referencer 1


Som en alternativ løsning til esskov 's kan du tvinge SCons til at bruge dit miljøs PATH variabel, hvilket vil gøre det muligt at bruge den samme kompilator, som du får, når du skriver cl ved kommandoprompten ( som kan indstilles korrekt ved at køre den relevante kommandoprompten genvej leveret af Visual Studio). For at gøre dette, formidle det eksterne miljøs PATH-variabel i dit SCons byggemiljø, f.eks .:


import os
env = Environment(ENV = {'PATH' : os.environ['PATH']})


Se denne FAQ-post eller dette afsnit i dokumentationen, og bemærk følgende advarsel: [6] [7]



  Selvfølgelig ved at formere eksterne miljøvariabler i din
  bygge, du 'løber risikoen for, at en ændring i det eksterne
  miljø vil påvirke bygningen, muligvis på utilsigtede måder.