【问题标题】:linker error after changed the type of c++ project from x86 to x64将 c++ 项目的类型从 x86 更改为 x64 后的链接器错误
【发布时间】:2024-04-13 03:15:05
【问题描述】:

我有一个编译好的项目,但我需要将它与 64 位库链接,我尝试将项目类型更改为 64,但现在项目链接不正确。

我得到的错误是:

Error   1   error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'   \createDLL.obj

查看输出,可以看到链接器是这样调用的:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"..\Debug\createDLL.exe" /INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"..\Debug\createDLL.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE:NO /IMPLIB:"..\Debug\createDLL.lib" /MACHINE:X64 /SAFESEH Debug\createDLL.obj

显然链接器正在寻找编译为 64 的 obj,但找不到它

如何设置编译器为 x64 编译?

我正在使用 VS 2012

【问题讨论】:

  • 您是否尝试过清理和重建?我不确定 x64 方面,但 MS Windows CE 的交叉编译需要对项目文件进行一些清理。在 VS2005(不确定 VS2012)中,首先将输出文件和中间文件的目录设置为每个平台和配置的单独路径。然后,用 $(OutDir) 和 $(IntDir) 替换编译器和链接器设置中的任何剩余路径。这应该可以帮助您入门并避免混淆。

标签: c++ visual-studio x86 64-bit


【解决方案1】:

1)如果可能,尝试获取 32 位版本的库。

2) 检查 Project->Properties->Configuration properties->Linker 中的选项。主要检查GeneralInputAdvanced页面中的设置。应该可以解决您的问题

【讨论】: