64位项目中的32位.obj

时间:2015-04-01 13:41:16

标签: visual-studio visual-studio-2013

我有一个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位系统模数库兼容。

1 个答案:

答案 0 :(得分:0)

x86可执行文件(即,为32位x86处理器编译的目标代码)可以在运行64位操作系统的x64机器上执行,通过处理器和操作系统共同支持的特殊兼容模式。这是可行的,因为x86指令集是x64指令集的子集。

然而,ABI的许多元素在x86和x64代码之间有所不同,特别是调用约定和指针大小。调用约定需要在调用代码和被调用代码之间进行匹配,否则事情会搞砸。因此,没有直接的方法从32位代码调用64位代码,反之亦然。