查看单个帖子
旧 2009-05-05, 11:31 AM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】getting nulls when calling across dlls

getting null's when calling across dll's
getting null's when calling across dll's
something strange...
i've got a database pointer to an open drawing in a class. when i go to open the modelspace id from a function within the class that contains the database member, everything works fine, but when i try doing it elsewhere things fail.
here's a contrived example of the problem i'm having. both cdwg and csomeotherclass are in seperate dll's.
here's the code that works:
cdwg:penmodelspace()
{
oddbblocktablerecordptr blockptr = this->m_databaseptr->getmodelspaceid().openobject(oddb::kforread);
}
here's the code that doesn't work:
csomeotherclass:penms()
{
// the cdwg m_dwg member is already open
// if i call m_dwg.openmodelspace() here it works fine
// this line doesn't work!
oddbblocktablerecordptr blockptr = m_dwg.m_databaseptr->getmodelspaceid().openobject(oddb::kforread);
(blockptr's m_pobject is null here)
}
another clue:
odrxclass* pclass = oddbline::desc();
when this line is in cdwg:penmodelspace it returns a valid pointer to static.
when it is in csomeotherclass:penms it returns null.
everything compiles and links fine. any ideas what i'm doing wrong?
thanks,
erle
are your dlls statically linked with dwgdirect? if so it will not work because of multiple instances of dwgdirect static data. to have single instance of dwgdirect in your project you need to use dll version of dwgdirect.
sergey slezkin
i'm using msvc++ .net 2002 version 7.0, statically linked as there are no dll's in that download.
will i be able to link to dll's in the vc6 download's? if not, can the devteam provide dll's for 2002?
thanks,
erle
hi sergey,
i've restructured my code's design to limit dwgdirect to a single dll. everything is running smoothly now, thanks for the help.
cheers,
erle
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)