程序本来是ObjectARX 2006 + VC2002写的,在AutoCAD2006上可以运行.
尝试在AutoCAD2004上运行,成功.
尝试在AutoCAD2008上运行,无法加载.
于是把头文件和库都改为ObjectARX 2008的,但是开发环境仍然是VC2002,编译时报错如下:AdAChar.h(36) : fatal error C1189: #error : Please use native wchar_t type (/Zc:wchar_t)在项目属性中的"C++"中的"语言"中打开"/Zc:wchar_t",然后继续编译,报错如下(包括后面还有一种):arxEntryPoint.h(140) : error C2664: “LoadStringA” : 不能将参数 3 从“ACHAR [133]”转换为“LPSTR”
        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换网上有人说需要把字符串全部用TEXT宏包含,但是我发现如果我用ObjectARX 2008 加 VC2008写一个程序,自己的的类(其实就是自己的2006中的类)中的字符串并不必须用TEXT宏包含一样可以建立运行,而且目前程序中用到了VC6中的一些类全用TEXT宏改也不太现实,关键是我感觉不全是这个原因.因为有的错误是必须用TEXT宏来解决的,如下面的错误:error C2664: “acutPrintf” : 不能将参数 1 从“char [80]”转换为“const ACHAR *”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换有兄弟姐妹知道怎么解决这个问题吗?另外我还有个疑问,在ObjectARX 2008\docs\arxdoc.chm文档中有如下一段,不是说ObjectARX 2006的程序可以在AutoCAD 2008上运行吗?还是不是这么个意思?API Compatibility
Binary compatibility between AutoCAD 2007 and AutoCAD 2008 has been maintained. Applications built with ObjectARX for AutoCAD 2007 and ObjectARX for AutoCAD 2006 will continue to run in AutoCAD 2008, but applications built using ObjectARX for AutoCAD 2008 may not work with previous releases.

解决方案 »

  1.   

    是不是有字打错了啊...是这样的...我必须按照客户的习惯来创建用于不同版本的CAD的程序来...但是我又不想维护两套项目文件...
      

  2.   

    http://www.objectarx.net/bbs/viewthread.php?tid=4388&fromuid=87983非常感谢二位!
    2005anjob你说的对哈突然才恍过神来...
    cloudlove按照你说的方法做了,能编译通过了~~~!你太帅了~~~呵呵
    可是链接无法通过,应该正如2005anjob所说的原因...
    那现在的问题就是如何在vc2002的环境中链接vc2005的mfc8的lib等等呢?
      

  3.   

    链接错误是什么?需要在选项中加入相应的lib文件吧。
    另外:
    据我所知,vc6,7,8,9分别对应arx的15,16,17,18.
    你编译错误应该是版本对应的不正确。
      

  4.   

    链接错误如你说料是找不到MFC8的lib,我把MFC8的lib的路径"C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib"加到附加库目录中就可以了,但是还有许多个链接警告,如下:acedapi.lib(acedcls.obj) : warning LNK4229: 遇到无效的指令“/manifestdependency:type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b'”;已将其忽略而且程序建立成功后仍然无法在AutoCAD 2008中加载,我感觉是不是VC2002中默认使用了MFC7的其它的东西我没有改过来呢?还有arx的15,16,17,18分别是arx的200X?
      

  5.   

    我把VC2002的“工具” ->“选项”对话框 ->“项目”->“VC++ 目录”里面全部到照搬VC2005里面的设置,结果出了几百个错误...还有什么地方可以改呢?
      

  6.   

    嗯,我注意到是相对路径了,我都改成VC8的绝对路径了,是不行的啊....
    我现在都要绝望了....没办法我退了一步,我把VC2000的工程首先改成了TEXT宏的"兼容"写法,然后用VC2005打开,然后转换,然后该工程的字符集为Unicode,然后把 C++的附加包含目录/using应用目录 以及链接的附加目录都改成对应的ObjectARX 2008的路径,然后编译,链接,加载,运行,OK,成功了...你说的没错啊在VC2005里面做当然是最好了啊,可是客户也有在使用低版本的CAD啊,这样如果我同时用VC2002/2005就需要维护两套代码了啊...麻烦而且容易关键容易出错.所以我觉得最好的解决方案就是同一个工具只是包含的头文件啊库啊什么的不同就可以了.现在看起来暂时不是很好的解决了...看看有更好的解决方法吗?
      

  7.   

    r15 2002
    r16 2004-2006
    r17 2007-2009
    r18 2010
      

  8.   

    多谢看看还有没有人知道怎么用VC2002建立r17的程序呢?
      

  9.   

    升级的问题
    2年前我也遇到过
    和LZ一样尝试了不同的方法,都是没用
    最后还是用了vs2005
    呵呵
    别浪费时间了,换编译器吧ps:办法应该也是有的。。但我当时真没试验出来,唉Arx想起来了以前的自己,现在在做手机了,怀念那时的日子