【番外】遇到autoCAD问题,大意失荆州,冒汗定位一星期

事情是这样的

有一位网友,要做一个CAD方面的arx插件,和倾斜摄影数据相结合,做些行业实用的功能。已经完成了主流的CAD版本,比如2021呀之类的,但是现在很多人仍然在用老版本的,比如CAD2007。但是低版本的,同样的代码,就是加载不上,于是求助于我。这一周我是比较忙的,因为我们周一到周三参与了军博展,我要守摊,晚上还有招待等,一般编程也就晚上十一点后了。但是:

我转念一想

这事儿不是很容易吗,我说把你用到的所有的环境都发过来,无非就是环境配置的问题,好搞的很。交给我,我来。

于是网友连夜发送了使用的:
osg365使用VS2005版本编译的,连同第三方库
AutoCAD2007
以及AutoCAD2007的插件开发包ObjectARX 2009

我自己装了vs2005于是我就开干了。

我先这么想

为了知其然又知其所有然,我打算先看看AutoCAD2007的arx开发,然后我打开了ObjectARX 2009,安装了其vs2005的开发插件,看了其自带的帮助文档。然后想着找个它自带的mfc的例子,其必弹出窗口,我把OSG的代码往里面一加,因为OSG在MFC上渲染只需要一个句柄就可以了。然后就完事儿了。

第一个困难

ObjectARX 2009自带的mfc的例子在AutoCAD2007运行不起来。vs2005安装完ObjectARX插件也无法创建工程成功。

遇到这个问题我这么想

我打打基础,自己建工程,从HelloWorld开始写AutoCAD2007的插件,直到写一个MFC弹窗的插件成功。

于是我下载了张帆的ObjectARX的教程,其是基于VC6.0的,不过我看着是入了门了。但是张帆说MFC的插件要用VS中ObjectARX安装的插件来弄。

于是我这么想

我直接完全重做一遍安装,结果发现VS中ObjectARX安装插件成功了,使用VS可以创建MFC的arx工程了。然后我就开始弹对话框,结果对话框也弹出来了,于是我想这不马上就要成功了吗。

我开心的直接给网友说我今天就搞定,等着吧。

第二个困难

结果窗口也弹出来了,OSG也加到MFC里了,但是就是插件加载失败。于是我开始了漫长的定位过程。

我先这么想

是不是对方发来的VS2008编译的OSG版本有关系,于是我花了一段时间把第三方库连同OSG365全部使用VS2008编译完了。

再加载:没用。

我又这么想

肯定是AUTOCAD的版本不行,因为破解版,没准不行呢,于是我安装了正式版的。

再加载:没用

我开始使劲调试

发现字符串只要进到osg的dll里,就变了,比如cow.osg,传到osg的dll就野指针了。

我是百思不得其解呀。

于是我开始这么想

我写一个最简单的dll,只传字符串,代码是这样的:

class DECLDIR osgDB1
{
public:
	osgDB1(void);
public:
	~osgDB1(void);

	void A(const std::string &str)
	{
		str;

	}

};

结果str只要进了A,cow.osg就变成了空了,说明只要加载dll,dll就不正常了。

于是我开始这么想

不会是win10的问题吧,要不装个xp的虚拟机试试。

我转念又这么想

装xp的虚拟机代价太大,所有东西要重弄。还是看看啥问题吧。会不会是ObjectArx2009的问题呢,于是我换了个2005。果然2005里的mfc的例子我可以在AUTOCAD2007里加上了。

但是只要加OSG的东西,一样死机。

我又这么想

不弄OSG了,自己手动写一个最简单的helloworld arx,然后把上面我那个字符串也就是最简单的dll加到arx里,看看对不对。

我一测试,咦,对了。dll加载正常了。

但是我用MFC的一测试,咦,加载又不正常了。传进去cow.osg,进去就变空了。

目标明确

确定arxMFC到底为什么加载dll就不行,而arx HelloWorld就行。于是我一个配置一个配置的对。最后确认了是:

AutoCAD2007使用的是VS2005的RELEASE版的DLL发布的,比如mfc80.dll而不是mfc80d.dll,而在工程中虽然是debug版本,但是MFC要使用release版本的。

于是我就开始各种试,

最后问题在这

在插件的头文件中涉及MFC和autocad库文件的,都不定义_DEBUG宏,定义_DEBUG宏在自己的头文件上方:

#define _DEBUG
#define AC_FULL_DEBUG

我定义了这两个东西。DEBUG工程就正常了,牛就加上了。
在这里插入图片描述

可真是累坏我了,希望未来自己能在这个领域有些创造

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片