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

时间:2012-03-06 17:24:13

标签: c++ windows visual-studio 32bit-64bit scons

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

可执行文件正在“x86”VS Cmd提示符中构建。但是,运行时,可执行文件不是32位(使用任务管理器确认。)我的同事使用scons文件在他的64位计算机上构建相同的项目,并且他的可执行文件在我的计算机上是32位。 (再次与任务经理确认)

dll是由32位JVM加载的,因为它们是64位,所以它们会抛出错误。我的同事不会这样做。

我们无法弄清楚为什么我的计算机在“x86”VS环境中强制进行64位构建。有没有人有任何建议?

P.S。 - 我有MS VS 2010,他有MS VS 2010 Express。

P.S.S。 - 我有64位python,因此我的scons也是64位。然而,我的同事也是如此。

2 个答案:

答案 0 :(得分:6)

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

Visual Studio 2010 Express 只能构建32位二进制文​​件 - 即使在64位Windows上 - 这就是Scons的功能。使用32位和64位编译器的Visual Studio 2010“非表达式”,Scons可能会在64位Windows上进行64位构建。

要指定Scons项目的32位或64位版本,可以分别将TARGET_ARCH设置为“x86”或“x86_64”。另见Scons Construction Variables

答案 1 :(得分:1)

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

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

请参阅this FAQ entrythis section of the documentation,并注意以下警告:

  

当然,通过将外部环境变量传播到您的   建立,你冒着外部变化的风险   环境可能会以非预期的方式影响构建。