Visual Studio命令编译器强制64位编译
Visual Studio Command Compiler Forces 64 Bit Compile
我正试图在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']})
请参阅此常见问题条目或文档的此部分,并注意以下警告:
当然,通过将外部环境变量传播到构建时,您面临的风险是环境可能会以意想不到的方式影响构建。
- G++无法编译Win7,64位(MinGW.org GCC-6.3.0-1)
- 在 Slackware 14.2 64 位上使用 ACE 库编译错误
- 在 64 位 Linux armv8 计算机上编译 32 位二进制文件时遇到问题
- 如何将 32 位编译二进制转换为 64 位
- 将32位和64位应用程序(具有相同代码)编译为一个EXE
- 在 64 位 Windows 上运行的 32 位应用程序是否仍然需要使用 SAFESEH 进行编译
- 在64位Debian上交叉编译32位时找不到Libpcap
- 在Java(JNI)中与Mingw C 一起编译64位静态LIB
- C2664:以 64 位编译时
- 在 64 位窗口上使用 dirent.h 编译错误
- 在 MSVC 2010 中编译 64 位应用程序
- 在使用 Visual Studio 2013 64 位编译器编译的 CMake 项目中使用 ttmath
- 在 64 位 debian 上编译 GCC 的代码可视化补丁
- 使用gcc 32位编译,作为带有-m64的64位程序
- 在 -m32 的 64 位编译错误上叮当
- Visual Studio似乎不认为它是在64位编译的。
- Visual Studio命令编译器强制64位编译
- 在Solaris10上使用g++进行64位编译
- VS2010:用64位编译C++项目
- "0xffffffff00000000"是否表明 32 位和 64 位编译之间混淆了?