LNK1112模块计算机类型'X86'与目标计算机类型冲突 'x64' (VC++ 2005)



我正试图使用以下步骤在Visual Studio 2005 Professional中构建一个空白的64位C++应用程序:

  1. 创建新的Win32控制台应用程序项目
  2. 转到Configuration Manager,创建x64类型的新解决方案平台,从Win32复制设置
  3. 保存&构建

然而,我得到了这个错误:

LINK : fatal error LNK1104: cannot open file 'kernel32.lib'

因此,我尝试更新库目录以指向kernel32.lib:

  1. 转到"项目属性"、"链接器"、"常规"、"其他库目录"并设置"C:\Program Files\Microsoft Visual Studio 8\VC\lib\aamd64"
  2. 保存&构建

这给了我一个错误:

LINK : fatal error LNK1104: cannot open file 'user32.lib'

因此,我尝试更新库目录以指向user32.lib:

  1. 转到"项目属性"、"链接器"、"常规"、"其他库目录",然后添加"C:\Program Files\Microsoft SDK \Windows\v7.1\Lib\x64"
  2. 保存&构建

但现在我得到了错误:

.x64debugstdafx.obj : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

你知道我做错了什么吗?

听起来问题出在对象文件stdafx.obj上,而不是系统库上。警告是说stdafx.obj是32位的,所以它不能链接到64位的目标。尝试的东西:

  • 删除生成目录x64win32
  • 重建项目
  • 检查stdafx.cpp的构建设置以确保其构建为64位

一定是Visual Studio的安装损坏了。新安装的Windows和VS2005解决了此问题。

这个问题已经很久没有提出了,但为了其他碰巧读到这篇文章的人的利益,所需的更改是在链接器标志设置中。将/machine:I386更改为/machine:x64

相关内容

最新更新