Monday, November 13, 2006

解决ObjectARX 2006 和 Visual C++ 7.1 的组合问题

再次遇到了这个问题,查了网友的一些建议和资料,总结如下。

网友总结的组合<http://lidingfeng0820.cnblogs.com/archive/2006/06/21/431308.html>

  • 比较经典的组合:ObjectARX 2002 + AutoCAD 2002 + VC6.0 + Assist 6.0 + VSS 6.0C Comments by Li Min:确实非常经典,除了VC6的不是很标准

  • 目前较稳定的组合:ObjectARX 2004/2005 + AutoCAD 2004/2005 + VC.Net 2002 Comments by Li Min:没有用过,VC 2002不是很普及

  • 不兼容的组合(一):ObjectARX 2005 + AutoCAD 2004/2005 + VC.Net 2003,需调用或验证大量VC7.0的库,否则编译不过。解决方案:拷贝VC2002安装目录下/VC7\atlmfc\lib下类似*70*的文件到VC2003下,主要有:mfc70.lib、 mfc70d.lib、mfc70u.lib、mfc70ud.lib mfcs70.lib、mfcs70.pdb mfcs70d.lib、mfcs70d.pdb mfcs70u.lib、mfcs70u.pdb、mfcs70ud.lib、mfcs70ud.pdb Comments by Li Min:没有用过,应该可行

  • 不兼容的组合(二):ObjectARX 2006 + AutoCAD 2006 + VC.Net 2003 + Assist X + VSS 6.0D 同样需要VC7.0的库,简要方法:(1) 复制VC2003的相关库文件如:mfc71.lib、mfcs71.lib并改名为类似*70*的文件如: mfc70.lib、mfcs70.lib;(2) 拷贝VC2002的相关库文件到VC2003的对应安装目录下。Comments by Li Min:可以解决!采用改名的方法,编译通过,加载时不要用appload(命令行) or "load application"(英文版菜单) or “加载应用程序”(中文版菜单),而在命令行输入"ARX", 接下来输入“Load”进行arx文件加载(忽略警告),在VC7.1+Autodesk Mechanical Desktop 2006(基于AutoCAD 2006)平台上实验成功,如果避免使用MFC相关功能的话,兼容性应该还是可以的。原文(作者lzljy)见<http://www.objectarx.net/bbs/archiver/?tid-69.html>

  • 使用C#的组合:ObjectARX 2006 + AutoCAD 2006 + V#.Net 2003,.Net ARX编程组合。编译的程序文件名为.dll,在AutoCAD中的加载命令为:NetLoad,但没有?载命令,只有关闭AutoCAD。调用ARX函数时using 相关命名空间,类似VC里include头文件。Comments by Li Min:据说ObjectARX 2005也可以,但是兼容性ObjectARX 2006最好

  • 最新的组合:ObjectARX 2007 + AutoCAD 2007 + VC.Net 2005 +Visual Assist v10.2.1442.0 + Visual SourceSafe 2005 Comments by Li Min:实在太新了...

其余的一些解决方案都是基于同时拥有vc7.0和vc7.1的,中文的有<http://www.mjtd.com/bbs/Archive_view.asp?boardID=14&ID=23876>,英文的有<http://manusoft.com/Resources/ARXTips/>。如果大家谁有mfc70系列的dll, lib和pch文件,也可以共享出来,我知道一个网址可以下载DLL文件<http://www.dll-files.com/dllindex/dll-files.shtml?mfc70>,但是编译ARX程序还必须有相应的lib文件。也有人说可以从.NET SDK 1.1中提取<http://www.microsoft.com/downloads/details.aspx?FamilyId=9B3A2CA6-3647-4070-9F41-A333C6B9181D&displaylang=en>,但是我不知道怎么从setup.exe中提取,也许会解压缩到一个临时目录吧。

另外,也有通过调用.net nmake工具并进行dll改名进行编译的,就是太麻烦了,详情见<http://discussion.autodesk.com/thread.jspa?threadID=372580>。

This page is powered by Blogger. Isn't yours?