从Visual Studio 2008编译和链接32位程序

时间:2011-01-18 20:52:42

标签: visual-studio-2008

昨天我问了同样的基本问题,但还没有达到足够明确的问题。基本上,这是我在构建应用程序时遇到的错误:

。\ Debug \ HotSync.obj:致命错误LNK1112:模块机器类型'x64'与目标机器类型'X86'冲突

我认为这意味着我正在编译64位对象模块,然后尝试链接32位可执行文件。那么这是编译器本身的问题,还是给编译器的选项?该项目以前是VC ++ 2003项目,所以一直是32位。

我可能会提到我可以找到的唯一版本的cl.exe位于VC \ bin的amd64和x86-amd64子目录中。我必须手动将其中一个路径添加到“VC ++目录”列表中,但结果是相同的。

我的托管PC是运行Windows 7 64位的AMD,但我希望我仍然可以构建将在XP上运行的程序。有谁知道怎么做?

2 个答案:

答案 0 :(得分:2)

Visual Studio 2008的默认安装应该将x86 cl.exe和关联的编译器二进制文件放在:

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\

在Win7 x64系统上。

如果那里没有cl.exe(即,在amd64x86_amd64目录之上',那么您可能需要考虑重新安装Visual Studio。

请注意,amd64目录中的编译器以x64系统为目标,并且本身可以在x64系统上运行。 x86_amd64目录中的编译器也针对x64系统,但它本身就是x86二进制文件(即,它从x86 32位系统交叉编译为x64)。

您还应该在Visual Studio 2008程序组(或Win7中可能调用的任何内容)中有一个快捷方式:

"Microsoft Visual Studio 2008" | "Visual Studio Tools" | "Visual Studio 2008 Command Prompt"

打开一个最初显示的命令窗口:

Setting environment for using Microsoft Visual Studio 2008 x86 tools.

在没有选项的情况下运行cl命令应该说:

Microsoft(R)32位C / C ++优化编译器版本15.00.21022.08(适用于80x86)

再次 - 如果没有这个适合你,你需要重新安装。

此外,请确保构建中涉及的所有项目的项目配置都设置为Win32而不是x64。

答案 1 :(得分:1)

显然,“问题”是我只安装了C ++,因为我计划使用它。但由于某种原因,我需要的cl.exe只作为C#安装的一部分安装。如此,去看看!通过不进行全面安装来为我提供正确的保护功能。