Visual Studio命令编译器强制64位编译

Visual Studio Command Compiler Forces 64 Bit Compile

本文关键字:64位 编译 编译器 Studio 命令 Visual      更新时间:2023-10-16

我正试图在Windows VS命令提示符中构建一个可执行文件和一些相关的dll。该项目附带了一个scons文件,所以我只需在VS Cmd Prompt中键入scons。

可执行文件是在"x86"VS Cmd Prompt中构建的。然而,当运行时,可执行文件不是32位的(与任务管理器确认)。我的同事使用scons文件在他的64位机器上构建了完全相同的项目,他的可执行文件在我的计算机上是32位的。(再次与任务经理确认)

dll是由一个32位的JVM加载的,当它们是64位时,会抛出一个错误。我的同事dll没有。

我们无法理解为什么我的计算机在"x86"VS环境中强制构建64位。有人有什么建议吗

附言-我有MSVS2010,他有MSVS2010Express。

p.S.S.-我有64位python,所以我的烤饼也是64位的。不过,我的同事也是。

Scons通常会根据安装的内容来确定要使用的工具链(即编译器)(如果您没有明确指定)。

Visual Studio 2010快速版只能构建32位二进制文件-即使在64位Windows上也是如此-所以Scons会这么做。对于同时提供32位和64位编译器的Visual Studio 2010"非快速版",Scons可能会选择在64位窗口上构建64位。

要指定Scons项目的32位或64位内部版本,可以将TARGET_ARCH分别设置为"x86"或"x86_64"。请参见Scons构造变量。

作为esskov的替代解决方案,您可以强制SCons使用环境的PATH变量,这将使其使用与在命令提示符下键入cl时相同的编译器(可以通过运行Visual Studio提供的相应命令提示符快捷方式正确设置)。为此,将外部环境的PATH变量传播到SCons构建环境中,例如:

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

请参阅此常见问题条目或文档的此部分,并注意以下警告:

当然,通过将外部环境变量传播到构建时,您面临的风险是环境可能会以意想不到的方式影响构建。