棘手的编译错误:module machine type 'X86' conflicts with target machine type 'x64'

时间:2023-01-30 15:12:53
各位大侠:

有一个工程,以静态的方式调用另一个名为Public的DLL ,两者都使用WIN32编译的话没有任何问题。使用x64编译时,DLL编译能正常通过,但编译EXE时出现Public.lib(Public.dll) :  fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

百度了一下,看到有人说要把“Linker”->“Advanced”->“Target Machine”设置为MachineX64 (/MACHINE:X64),但是我的工程属性中本来就是这样设置的,求高手!

谢谢~

5 个解决方案

#1


编译环境为64位Windows7+VS2010,但网上有人用VS2008也出现过类似的问题。

还有MSDN上的一个帖子: http://social.msdn.microsoft.com/Forums/zh-CN/vcgeneral/thread/e2c0710c-d5f4-43d1-9716-2724b9a0924e
求解!

#2


注意,你引入的Lib库也要是64位的,你用的应该是X86的Lib
在VC 目录里面设置Lib路径

#3


LInk的Lib文件也要是64bit版本...

#4


问题找到了,果然是include 了32位的Lib,因为我的32位和64位目标Lib的名称是一样的,所以需要将64位的Lib指向另一个目录。

#5


谢谢大家!

#1


编译环境为64位Windows7+VS2010,但网上有人用VS2008也出现过类似的问题。

还有MSDN上的一个帖子: http://social.msdn.microsoft.com/Forums/zh-CN/vcgeneral/thread/e2c0710c-d5f4-43d1-9716-2724b9a0924e
求解!

#2


注意,你引入的Lib库也要是64位的,你用的应该是X86的Lib
在VC 目录里面设置Lib路径

#3


LInk的Lib文件也要是64bit版本...

#4


问题找到了,果然是include 了32位的Lib,因为我的32位和64位目标Lib的名称是一样的,所以需要将64位的Lib指向另一个目录。

#5


谢谢大家!