您的位置:首页 > 移动开发 > Objective-C

ObjectArx 项目编译所出现的问题

2016-07-06 10:34 399 查看


1.“LINK
: fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”


解决办法:

1. 根据错误信息是链接期间出的问题,并且是转换到COFF文件失败,说明极有可能是资源文件转COFF文件的工具cvtres.exe存在冲突;替换掉无效的cvtres.exe文件

2.fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突

1、原因:win7下的64位系统,在运行程序的时候,需要的DLL必须是64位系统编译的,VS2008也必须在安装的时候,选择了64位编译的支持。如果安装的时候,已经选择了,那么出现该问题的解决办法,安装网上常规的思路即可。既:
       (1)右键项目名,点击属性,弹出项目属性页,找到链接器----高级,修改右侧的目标计算机,选择有X64的那个选项。

        (2)右键项目名,选择清理解决方案,清理完之后选择X64平台编译器,然后重新生成解决方案,便可以调试成功。
注:按照网上搜到的方法执行完以上步骤后,我的程序仍然报错,只是X86和X64的位置换了一下。。汗死。。于是折腾出一下步骤:
2、如果此时问题依然没有解决,则可能是系统包含的DLL文件是win32下编译的,则,需要把DLL换成64位系统编译的。比如opencv2.3.1,之前编译的就是win32下编译的,则需要重新编译,具体步骤如下:
      (1)、右键解决方案->属性,将平台选为X64,若无此选项,则点击配置管理器,选择X64平台,若无则新建一个X64平台并选中。



       (2)、接着,打开OpenCV.sln,右键清理,重新生成,注意配置管理器里面选择x64平台,不然编译出来的还是不能使用。   
         (3)、编译完成之后,配置DLL和Lib的路径后,就不会再出以上的错误了。


3.在用VS2012编译时出现下面的错误

error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1600”不匹配值“1700”

error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1600”不匹配值“1800”
问题分析:

_MSC_VER 定义编译器的版本。下面是一些编译器版本的_MSC_VER值:

MS VC++ 10.0 _MSC_VER = 1600

MS VC++ 9.0 _MSC_VER = 1500

MS VC++ 8.0 _MSC_VER = 1400

MS VC++ 7.1 _MSC_VER = 1310

MS VC++ 7.0 _MSC_VER = 1300

MS VC++ 6.0 _MSC_VER = 1200

MS VC++ 5.0 _MSC_VER = 1100

其中MS VC++ 10.0就是Visual C++ 2010,MS VC++ 9.0就是Visual C++ 2008,MS VC++ 8.0就是Visual C++ 2005。

由于你使用了vs2012,相比较vs2010以及之前的vs为更高版本,致使msvc不兼容!

解决方法:

在项目右键属性-配置属性-常规中,平台工具集选用为合适平台即可,我这里就选择 vs2010 (v100).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: