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

来源:互联网 发布:出纳 知乎 编辑:程序博客网 时间:2024/04/29 23:44

 win7 下,安装的VS2008,然后搭配opencv2.3.1运行,报错为:fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突 。通过网上查询,给错的答案大同小异,但是依然有很多朋友按照网上的答案无法解决这个问题,一下是我的解决方案,仅供参考:

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

       (1)右键项目名,点击属性,弹出项目属性页,找到链接器----高级,修改右侧的目标计算机,选择有X64的那个选项。

        (2)右键项目名,选择清理解决方案,清理完之后选择X64平台编译器,然后重新生成解决方案,便可以调试成功。

2、如果如果在选择平台的下拉列表里找不到x64,则说明系统没有安装支持64位编译,则按照一下方式安装:

        在控制面板添加删除程序中,选择VS2008,点击卸载,出现修复选项,对VS2008修复,即可重新安装插件,或者直接安装文件VS2008SP1CHSX1512981.iso,重新安装一遍也可以出现如下界面:

选择画红框的选项即可。

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

      (1)、运行CMake2.8,点 configure,在弹出的对话框内选择 Visual Studio 9 2008 win64,这个地方需要注意,很多资料上面在介绍opencv配置的时候,都没有提及64位的选项问题,大家都是默认选择 Visual Studio 9 2008,没有选后面带win64的,导致make出来的文件没法使用。完成后选择“Generate”。   

       (2)、这时候,打开OpenCV.sln,分别在Debug和Release下生成,注意配置管理器里面选择x64平台,不然编译出来的还是不能使用。   

         (3)、编译完成之后,配置后DLL和Lib的路径,就不会再出以上的错误了。