链接问题:致命错误LNK1112:模块机器类型'x64'与目标机器类型'X86'冲突

gru*_*ber 26 c++ linker visual-studio

我试图从wxFreeChart库运行示例应用程序.在链接编译后出现错误:

wxcode_msw28d_freechart.lib(wxfreechart_lib_xydataset.obj) : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
Run Code Online (Sandbox Code Playgroud)

我试图将链接器选项\ advanced\target机器切换到MachineX64,但它不起作用.

我正在使用visual studio 2008,有什么建议吗?

感谢帮助

Han*_*ant 33

错误是显式的,您正在尝试链接使用不同CPU目标编译的库.可执行映像只能包含纯x86(32位)或纯x64(64位)代码.混合是不可能的.

您可以通过为项目创建新配置来更改目标CPU,仅更改链接器设置是不够的.在右上角的Build + Configuration Manager,Active solution platform组合中,选择New并选择x64.这将创建一个包含多个已修改项目设置的新配置,最重要的是将使用的编译器.

请注意,在VS2010之前,默认情况下不会安装64位编译器.如果在平台组合中没有看到x64,则需要重新运行setup.exe并打开选项以安装64位编译器.然后还重新运行您可能已应用的任何Service Pack安装程序.

一个痛点较少的可能方法是使用32位版本的库.

  • 我解释了这个错误的原因.如果你不喜欢答案,那就不要问. (9认同)

小智 17

我也遇到了这个问题并找到了解决方案.

首先是我如何解决这个问题.我有一个在x86中构建的项目.然后我使用配置管理器添加x64,我遇到了这个问题.

通过BuildLog.htm仔细查看,我看到这两个列为链接器选项:

/MACHINE:X64  
/machine:X86 
Run Code Online (Sandbox Code Playgroud)

我在"属性页"对话框中找不到可以更改此内容的任何位置,因此我打开了.vcproj文件并查找了相应的行并将其更改为:

AdditionalOptions=" /STACK:10000000 /machine:x64 /debug"
Run Code Online (Sandbox Code Playgroud)

问题解决了.

  • 顺便说一句,"AdditionalOptions"可以在链接器/命令行/附加选项下的GUI中找到 (7认同)
  • 这个答案帮助我找到了一个解决方案,在我的情况下,在一个不同的项目上发生了一个非常相似的事情,我试图将其从32位转换为64位.结果我错过了将附加选项中的显式/机器:X86设置转换为/ machine:x64 (4认同)

Jos*_*eph 6

转到项目属性 - >配置属性 - >库管理器将目标机器设置为MachineX64(/ MACHINE:X64)


rog*_*ack 5

在我的情况下,它似乎是因为我从32位到新配置(64位)"复制了设置"并且它没有更新库.奇.

1> MSVCRTD.lib(ti_inst.obj):致命错误LNK1112:模块机器类型"X86"与目标机器类型"x64"冲突

这意味着"您的属性 - > VC++目录 - >库目录"指向一个内置32位lib的目录.不知何故修复!

在我的情况下http://social.msdn.microsoft.com/Forums/ar/vcgeneral/thread/c747cd6f-32be-4159-b9d3-d2e33d2bab55

参考:http://betterlogic.com/roger/2012/02/visual-studio-2010-express-64-bit-woe