我正试图使用以下步骤在Visual Studio 2005 Professional中构建一个空白的64位C++应用程序:
- 创建新的Win32控制台应用程序项目
- 转到Configuration Manager,创建x64类型的新解决方案平台,从Win32复制设置
- 保存&构建
然而,我得到了这个错误:
LINK : fatal error LNK1104: cannot open file 'kernel32.lib'
因此,我尝试更新库目录以指向kernel32.lib
:
- 转到"项目属性"、"链接器"、"常规"、"其他库目录"并设置"C:\Program Files\Microsoft Visual Studio 8\VC\lib\aamd64"
- 保存&构建
这给了我一个错误:
LINK : fatal error LNK1104: cannot open file 'user32.lib'
因此,我尝试更新库目录以指向user32.lib
:
- 转到"项目属性"、"链接器"、"常规"、"其他库目录",然后添加"C:\Program Files\Microsoft SDK \Windows\v7.1\Lib\x64"
- 保存&构建
但现在我得到了错误:
.x64debugstdafx.obj : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
你知道我做错了什么吗?
听起来问题出在对象文件stdafx.obj
上,而不是系统库上。警告是说stdafx.obj
是32位的,所以它不能链接到64位的目标。尝试的东西:
- 删除生成目录
x64
和win32
- 重建项目
- 检查
stdafx.cpp
的构建设置以确保其构建为64位
一定是Visual Studio的安装损坏了。新安装的Windows和VS2005解决了此问题。
这个问题已经很久没有提出了,但为了其他碰巧读到这篇文章的人的利益,所需的更改是在链接器标志设置中。将/machine:I386更改为/machine:x64