Visual studio 64位项目中的32位.obj

Visual studio 64位项目中的32位.obj,visual-studio,visual-studio-2013,Visual Studio,Visual Studio 2013,我有一个32位的对象文件o.obj,希望在使用64位库l.lib的项目中使用它 要使.lib满意,需要将Visual Studio配置设置为x64。但是,链接器随后抛出错误LNK1112:模块计算机类型“X86”与目标计算机类型“x64”冲突 我浏览了VisualStudio的链接器选项,但没有任何结果。有没有办法解决这个错误 我的印象是,任何32位代码都与64位系统、模库兼容。x86可执行文件,即为32位x86处理器编译的目标代码可以在运行64位操作系统的x64机器上执行,通过处理器和操作系统

我有一个32位的对象文件o.obj,希望在使用64位库l.lib的项目中使用它

要使.lib满意,需要将Visual Studio配置设置为x64。但是,链接器随后抛出错误LNK1112:模块计算机类型“X86”与目标计算机类型“x64”冲突

我浏览了VisualStudio的链接器选项,但没有任何结果。有没有办法解决这个错误


我的印象是,任何32位代码都与64位系统、模库兼容。

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


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

为什么要在x64项目中使用32位对象?错误很明显-您不能混合来自不同机器类型的对象。这不是让VS高兴或找到解决方法的问题——至少指针和类型有不同的大小。我希望在我的代码中直接使用它,但我想我会通过重建库来避免这个问题。