Visual studio 2013 如何在Win7 64位上使用VStudio 2013构建32位应用程序?

Visual studio 2013 如何在Win7 64位上使用VStudio 2013构建32位应用程序?,visual-studio-2013,32bit-64bit,Visual Studio 2013,32bit 64bit,我正在尝试使用MS Visual Studio 2013和BAT文件,而不是从GUI中,在Win7 64位系统上构建32位EXE 根据,所有需要做的就是使用“x86”选项运行VCVARSALL。这将设置一组环境变量,使工具发出32位代码。当我这样做时,一切都会顺利完成。生成的EXE在64位系统上正确运行。在WinXP 32位系统上,会弹出一个窗口,指出它不是有效的32位应用程序 我把所有这些都放进了一个BAT文件,以准确地显示我在做什么。此BAT文件删除所有派生文件,以确保它们实际上已生成,而不

我正在尝试使用MS Visual Studio 2013和BAT文件,而不是从GUI中,在Win7 64位系统上构建32位EXE

根据,所有需要做的就是使用“x86”选项运行VCVARSALL。这将设置一组环境变量,使工具发出32位代码。当我这样做时,一切都会顺利完成。生成的EXE在64位系统上正确运行。在WinXP 32位系统上,会弹出一个窗口,指出它不是有效的32位应用程序

我把所有这些都放进了一个BAT文件,以准确地显示我在做什么。此BAT文件删除所有派生文件,以确保它们实际上已生成,而不仅仅是以前的尝试中留下的文件。它还在VCVARSALL之前设置了相关的环境变量(据我所知),以确保VCVARSALL之前没有处理一些奇怪的设置

以下是BAT文件:

@echo off
rem
rem   Test of building a 32 bit executable.
rem
rem   See: https://msdn.microsoft.com/en-us/library/f2ccy3wt(v=vs.120).aspx
rem
setlocal
if exist hello.exe del hello.exe
if exist hello.exp del hello.exp
if exist hello.lib del hello.lib
if exist hello.obj del hello.obj

set include=
set lib=
set libpath=
set VS120COMNTOOLS=
set vstudio=
set PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem

call "%MSVCDir%\vcvarsall" x86

cl /c hello.c /Fohello.obj
link /out:hello.exe /incremental:no hello.obj
同样,结果是HELLO.EXE在该系统上运行正常,但在32位系统上运行不正常


如何在这个64位系统上构建32位EXE?

它和位无关,VS2013默认构建需要Vista或更高版本的程序。链接器/子系统设置的副作用。您还必须以旧版本的SDK(7.1或更低版本)为目标。最容易在VS2013中使用IDE完成的是,将平台工具集设置更改为v120_xp。@Hans:Interesting。我有各种各样的东西要自动构建,所以在IDE中这样做对我来说不合适。我查一下。在哪里可以找到如何为旧SDK设置内容?VS2013也有这样的功能吗?我有在WinXP系统上构建各种东西的自动化流程,但需要让它们在带有VS2013的Win7系统上工作。结果仍然需要支持较旧的WinXP系统。请使用MSBuild.exe自动生成。如果您坚持手工处理,那么请查看.tlog文件或详细的构建跟踪,它们会显示更改平台工具集时使用的编译器和链接器选项。编译器的/I(包括目录)和链接器的/SUBSYSTEM选项才是最重要的。@Hans:我已经有了许多脚本和一个更大的构建系统的其他部分,这些都可以在WinXP上正常工作。由于计算机升级,我需要使用VS2013在Win7 64位上运行此功能。所有这些都是有原因的,有一些是历史性的,但也有各种各样的东西,除了Windows可执行文件之外,正在构建与VS无关的东西。它与比特数无关,VS2013默认构建需要Vista或更高版本的程序。链接器/子系统设置的副作用。您还必须以旧版本的SDK(7.1或更低版本)为目标。最容易在VS2013中使用IDE完成的是,将平台工具集设置更改为v120_xp。@Hans:Interesting。我有各种各样的东西要自动构建,所以在IDE中这样做对我来说不合适。我查一下。在哪里可以找到如何为旧SDK设置内容?VS2013也有这样的功能吗?我有在WinXP系统上构建各种东西的自动化流程,但需要让它们在带有VS2013的Win7系统上工作。结果仍然需要支持较旧的WinXP系统。请使用MSBuild.exe自动生成。如果您坚持手工处理,那么请查看.tlog文件或详细的构建跟踪,它们会显示更改平台工具集时使用的编译器和链接器选项。编译器的/I(包括目录)和链接器的/SUBSYSTEM选项才是最重要的。@Hans:我已经有了许多脚本和一个更大的构建系统的其他部分,这些都可以在WinXP上正常工作。由于计算机升级,我需要使用VS2013在Win7 64位上运行此功能。所有这些都是有原因的,有一些是历史性的,但也有各种各样的东西,除了Windows可执行文件之外,正在构建与VS无关的东西。