fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突——我的解决方案

时间:2021-07-30 11:16:56

碰到这个问题,我也蒙了,我编译的是个静态库,没有依赖什么别的东西,报的错误是test.obj模块计算机类型“X86”与目标计算机类型“x64”冲突,我上网查了下,发现存在如下解决方案

<1>

1、原因:win7下的64位系统,在运行程序的时候,需要的DLL必须是64位系统编译的,VS2008也必须在安装的时候,选择了64位编译的支持。如果安装的时候,已经选择了,那么出现该问题的解决办法,安装网上常规的思路即可。既:

       (1)右键项目名,点击属性,弹出项目属性页,找到链接器----高级,修改右侧的目标计算机,选择有X64的那个选项。
        (2)右键项目名,选择清理解决方案,清理完之后选择X64平台编译器,然后重新生成解决方案,便可以调试成功。

<2>

2、如果此时问题依然没有解决,则可能是系统包含的DLL文件是win32下编译的,则,需要把DLL换成64位系统编译的。比如opencv2.3.1,之前编译的就是win32下编译的,则需要重新编译,具体步骤如下:

但是我仔细参照了一下,我的这个静态库的编译还真不是这个导致的,每次重新编译都正常,为什么会这样呢,因为在程序编译的过程中,如果发现obj文件已经编译过就会直接拿过来用,所以32位下编译过了,直接编译就会报这个错误,反之会报x64于目标x86冲突,所以我在项目,属性->c/c++中有两个选项一个是ASM

列表位置,一个是对象文件名,这两个以前的输出是debug\,release版本是release\,现在我改为了$(platform)\debug和$(platform)\release,这样不同平台的对象文件就会生成在不同目录,也就解决了这个冲突问题了。