我有一个32位目标文件o.obj
,并希望在使用64位库l.lib
的项目中使用它。
要使.lib
满意,Visual Studio配置需要设置为x64。但是,链接器然后抛出error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
的错误。
我浏览了Visual Studio的链接器选项,但没有跳出来。有没有办法解决这个错误?
我的印象是任何32位代码都与64位系统模数库兼容。
答案 0 :(得分:0)
x86可执行文件(即,为32位x86处理器编译的目标代码)可以在运行64位操作系统的x64机器上执行,通过处理器和操作系统共同支持的特殊兼容模式。这是可行的,因为x86指令集是x64指令集的子集。
然而,ABI的许多元素在x86和x64代码之间有所不同,特别是调用约定和指针大小。调用约定需要在调用代码和被调用代码之间进行匹配,否则事情会搞砸。因此,没有直接的方法从32位代码调用64位代码,反之亦然。