[求助]关于debug进去与直接ap加载进去,运行结果不一样的问题
最近遇到一个问题,就是我在选择一个自定义实体的时候,
debug进系统,如果没选中就会return,没有问题。
但是我如果直接启动CAD,加载arx程序,
如果没选中实体,直接按回车,
系统不return,而是直接报错了。
我试着用MessageBox,想阻塞命令窗口,可是不行。
是否与On_kInitAppMsg(void *pkt)、On_kUnloadAppMsg (void *pkt)
这两个函数有关系?
如果有,应该怎样配置,让dubug的运行结果与直接加载arx结果一样?
是否直接加载arx与debug进系统,初始化的顺序不一样?
还望各位大侠指点。
多谢!
说的不明白。。。。你直接加载是Release版本?正常情况,调试不调试是相同的结果!你直接上代码吧,不过这几天有点忙,不知道下次什么时候会上 本帖最后由 epwt 于 2011-5-19 14:13 编辑
resbuf *filter;
filter = acutBuildList(8, "WALL", 0);
if(acedSSGet(NULL, NULL, NULL, filter, ss) != RTNORM)
{
acutRelRb(filter);
return;
}
acutRelRb(filter);
acedSSLength(ss, &len);
acedSSName(ss, 0, ent);
acdbGetObjectId(objId, ent);
acedSSFree(ent);
正常情况下,如果我选中的不是WALL图层的实体,
直接按回车,应该就走到if里直接return的,
我debug进去,的确是这样。
但是我直接打开cad,加载arx程序,
执行同样的操作,程序却报错了。
我严格检查了在执行这个操作之前的操作,
看是否前面的操作导致这个操作失灵。
于是我怀疑,是不是debug进去,加载的顺序和
直接打开cad加载的顺序有些不一样,导致这个问题的出现。
当然,更可能的是某些内存没回收,但是这个还真的很难找啊。
还望多指教。
问题已经解决了,
我在选择WALL图层前,
把其它不相关图层都关闭了,
选择完毕,执行相应操作后,
再把关闭的图层打开。
这样就除非用户点取消,
不然是不会选错的。
问题虽然解决了,
但还是回问回去,
从编译器运行程序和直接打开cad加载程序,
初始化的顺序是否不同?
如果不同,那他们初始化的顺序分别是什么样的呢?
还望大家多指点。 那个可能叫“从调试器启动程序?”你指的是这个吧?通常来说,如果同是Debug版本的程序,理论上来讲,是一样的!不太清楚,你这里所谓的“初始化”的顺序到底是指什么东西。Debug版和Release版,一个区别是Debug版通常会做一些默认的初始化,如你定义一个int i;在调试版中,它的值是0,而发布版,这就可能是一个随机数! 哦,这样子呀。
看来问题是处在初始化了。
多谢!
页:
[1]