高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】错在什么地方?
错在什么地方?
错在什么地方?
这是一个objectarxsdk2里的一个例子,我新建一个arx4版的解决方案后,将代码粘帖过来编译、连接正常,但运行命令coordsamp至下面一句
pblock->appendacdbentity(objid, pnewobj);
时,出现错误提示:
“acad.exe 中的0x64503f90处未处理异常:0xc0000005: 读取位置0x00000054时发生访问冲突!”
根据经验这都是指针引发的问题,但我不知是哪个指针未作处理、应怎样处理?
程序类声明:
class asdkcoordsamp : public acdbentity
{
public:
acrx_declare_members(asdkcoordsamp);
asdkcoordsamp();
~asdkcoordsamp();
virtual adesk::boolean worlddraw(acgiworlddraw *);
void viewportdraw(acgiviewportdraw *);
acad::errorstatus transformby(const acgematrix3d &);
private:
adesk::uint32 mnumverts;
acgepoint3d *mpverts;
};
复制代码
程序类的实现:
asdkcoordsamp::asdkcoordsamp() : mnumverts(4)
{
mpverts = new acgepoint3d[mnumverts];
mpverts[0] = acgepoint3d(0.0, 0.0, 0.0);
mpverts[1] = acgepoint3d(1.0, 0.0, 0.0);
mpverts[2] = acgepoint3d(0.0, 1.0, 0.0);
mpverts[3] = acgepoint3d(0.0, 0.0, 1.0);
}
……
复制代码
命令coordsamp:
static void coordsys_coordsamp(void)
{
// add your code for command coordsys._coordsamp here
asdkcoordsamp *pnewobj = new asdkcoordsamp;
acdbblocktable *pblocktable=null;
acdbhostapplicationservices()->workingdatabase()
->getsymboltable(pblocktable, acdb::kforread);
acdbblocktablerecord *pblock=null;
pblocktable->getat(acdb_model_space, pblock, acdb::kforwrite);
pblocktable->close();
acdbobjectid objid;
//运行至下一句引发了异常
pblock->appendacdbentity(objid, pnewobj);
pblock->close();
pnewobj->close();
}
复制代码
为什么在vc6.0+objectarx2的指针到visual studio.net2+objectarx4中就不行了呢?
[ 本帖最后由 hi_tek 于 8-9-18 04:06 pm 编辑 ]
好象是“acgepoint3d *mpverts;”指针引起的,不知在vc6.0+objectarx2的指针到visual studio.net2+objectarx4中就不行了呢?
不太清楚
|