2011-01-18 42 views
1

昨天我问了这个同样的基本问题,但还没有足够清楚地了解这个问题。基本上,这是错误建立我的应用程序时,我现在得到:从Visual Studio 2008编译和链接32位程序

\调试\ HotSync.obj:致命错误LNK1112:模块机型“64”与目标机器类型冲突“X86”

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

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

我的主机电脑是运行Windows 7 64位的AMD,但我希望我仍然可以构建将在XP上运行的程序。有人知道怎么做吗?

回答

2

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

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

一个Win7的x64系统上。

如果您在那里没有cl.exe(即位于amd64x86_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命令有没有选项应该这样说:

微软(R)32位C/C++为80x86优化编译器版本15.00.21022.08

再次 - 如果这些都不适合您,则需要重新安装。

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

+0

我希望这不是因为我有VS 2008“Standard”而不是“Pro”,但我得到的印象是,因为我将它安装在64位Win7 Professional上系统,它不会安装用于创建32位应用程序的组件。该产品的设置几乎没有自定义选项,因此很难准确地确定它正在做什么。我会尝试重新安装它,看看会发生什么。 – gordonwd 2011-01-19 02:28:28

+0

@gordonwd任何消息? – alcor 2012-08-28 09:32:02

1

显然,“问题”是我只安装了C++,因为这就是我打算使用的所有东西。但出于某种原因,我只需要将cl.exe安装为C#安装的一部分。所以去figger!通过不进行全面安装来为我节省空间而为我服务。

相关问题