几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   DirectDWG (http://www.dimcax.com/hust/forumdisplay.php?f=89)
-   -   【转帖】runtime Error (http://www.dimcax.com/hust/showthread.php?t=18477)

yang686526 2009-05-07 03:17 PM

【转帖】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"


所有的时间均为北京时间。 现在的时间是 08:26 PM.