代码改变世界

[原创]VS2010 IDE编译多版本ARX的情况理解

2011-12-15 16:15  Scott Guthrie Liu  阅读(1933)  评论(0编辑  收藏  举报

一、用VS2010 IDE 编译arx 2000~arx2011,只需要:

       1、安装VS2010;
       2、先去http://daffodil.codeplex.com/ 下载安装platform toolset;
       3、硬盘上有低版本的VS(VC6,VS2002,VS2003,VS2005,VS2008),这些低版本的VS无需安装版本,可以从别人安装的那儿复制过来。或者下载传说中的很多绿色版的VC编译器。
    (非开发机器会因为编译的的环境不同需要安装不同的运行环境VC ++  Redistribute 否则会出现ARX文件无法加载的问题) 主要是VS2005时代对应的AutoCAD 2007-2009版本, VS 2008 SP1是必须的AutoCAD 2010时就使用了。

                v8 => vs2005 vs2005sp1 vs2005sp2 => VC 2005++ / 2005 sp1 / 2005sp2  Redistribute 

                v9 => vs2008 vs2008sp1 => VC 2008++ / 2008 sp1   Redistribute

                v10 => vs2010 vs2010sp1 => VC 2010++ / 2010 sp1   Redistribute

       4、一般绿色编译器都会有个注册表文件,将绿色编译器放到需要的目录,记录下来,替换注册表中的路径即可 ; (绿色版的关键步骤)
        如果在之前已经坑爹的装了很多版本就不需要3、4步骤了,这个就是写入注册表一些记录告诉IDE去哪找这些文件。  

到这里得到的好处就是,在一个新的电脑下,或者重装系统后,无需再装VC6,VS2002,VS2003,VS2005,VS2008,安装这些低版本VS是个很痛苦无聊的过程,修改导入注册表的过程就相当于安装过程了,省去了很多麻烦,相当于绿色版本。
    编译时切换"属性" -> "配置属性" -> "常规" -> "平台工具集" 

    由于很多人提“实现了用VS2010 IDE 编译arx 2000~arx2011”感觉很迷惑,这个只是解决编译环境安装方便的问题。少打开几个编译环境。不同的版本ARX的编译要安装相应的ObjectARX 编译时设置对应的inc lib目录,编译。 感觉这点不是很大的便宜, 或者我理解有偏差? 编译设置ObjectARX inc lib有更好的方法? 请熟悉的指导  自定义VS2010项目文件vcxproj动态管理inc lib

 


二、一些错误的原因: 

  1、错误提示:VS2008编译错误fatal error C1902: 程序数据库管理器不匹配;请检查安装解决  

     原因:     这个是绿色版不完美的原因,cl运行需要mspdb80.dll但是其他工程需要.pdb;  mspdbsrv.exe 或 mspdbcore.dll 丢失或者其版本和 mspdb80.dll 的版本不同

     解决:     本来如果是cl或者dumpbin需要mspdb80.dll从bin中删掉,

       但是是为了兼容绿色编译,就整更多的文件过来到。C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE下面拷贝mspdbsrv.exe mspdb80.dll mspdbcore.dll 到C:\Program Files\Microsoft Visual Studio 9.0\VC\bin下面,重启VS即可。当然没有安装的去下载或者别的机器上拷贝。

  2、错误提示:fatal error C1083: 无法打开包括文件:“type_traits”: No such file or directory
     原因:   type_traits 是C++标准TR1 header微软的实现(其是买的其他公司的一个stl版本) ; 这个是在VS2008 SP1后出现; AutoCAD2010开始就用的VS2008 SP1 开发的,提供的ObjectARX引用了这个头文件。所以老版本的ARX需要用对于版本的ObjectARX inc lib 文件编译。 

     解决:     找个VS 2008 SP1 的绿色版编译才是安全的解决;  如果用了VS 2008 或者替换SP1的include头文件也可


三、 后续期待切换编译环境inc lib有好的解决办法

    已解决  自定义VS2010项目文件vcxproj动态管理inc lib