查看单个帖子
旧 2009-05-07, 03:17 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】runtime Error

runtime error
runtime error
my project is a mdi application and has sub static lib projects & dll projects.
i am doing something as below
class cmyapp : public cwinapp {
.............
.............
public:
odrxobjectimpl<myservices> m_svcs;
}
bool cmyapp::initinstance() {
.............
.............
odinitialize(&m_svcs);
}
int cmyapp::exitinstance( ) {
.............
.............
oduninitialize ();
}
in one of the sub project (dll) , (this is having database specific code) , i use something as below
the constructor of the class cmyline looks similar to as shown below
cmyline::cmyline()
{
m_poddbentity = (oddblineptr) oddbline::createobject(); //m_poddbentity is oddbobjectptr type
((oddblineptr)m_poddbentity)->setstartpoint(odgepoint3d(0,0,0));
((oddblineptr)m_poddbentity)->setendpoint(odgepoint3d(0,0,0))
}
cmyline class the corresponding oddbline object and
i am instatiationg cmyline class from another sub project (static lib) & i am getting oderror.
it fails at the first line in the constructor of cmyline. (ie. at call to oddbline::createobject())
& breaks at the call oddb_declare_members(oddbline); defined in dbline.h
class toolkit_export oddbline : public oddbcurve
{
public:
oddb_declare_members(oddbline); //fails at this line
please guide me to resolve the problem.

odinitialize must be called before instantiating any dd objects.
sincerely yours,
george udov
thanks for the reply. unfortunately my problem is not fully solved.
i was hoping that i will have to call odinitialize() once at the start of my application and call oduninitialize() prior to the end
of the application.
can i call odinitialize() any number of times?
in my case the oddatabaseptr is kept alive till one closes the drawing.
does calling odunitialize() in between can affect the validity of the database pointer?
i do not have the earlier reported problem when i call oddbline::createobject() directly without wrapping the call in
the constuctor of my class.
earlier i have tried a different way too and that time i didn't experience any problem, though the oddbline::createobject() was wrapped inside
my entity class. however , i had problems in opening certain database objects directly by calling from the static lib project.
in many cases oderror variable traced in the catch block displays "vector deleting destructor" and calling m_svcs.geterrordescription(e.code()).c_str() in certain cases prints the error as "object erased"
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)