![]() |
【转帖】pure virtual function call odprotocolextensionimplodrxclass
pure virtual function call odprotocolextensionimpl<odrxclass
pure virtual function call odprotocolextensionimpl<odrxclass>::~odprotocolext ensionim hi, im getting the debug error: runtime error! r6025 -pure virtual function call this comes from the destructor of odprotocolextensionimpl<odrxclass>::~odprotocolext ensionimpl<odrxclass>() can anybody tell me whats wrong? normaly this happens if a virtual method is called from the constructor so the base class funktion will be called! thanx rob hi, can you print all the call stack? this is caused because the destructor of the base class is calling a pure virtual method, which is overriden in some of the inheritants. regards here it is: > msvcr71d.dll!_nmsg_write(int rterrnum=25) line 195 c msvcr71d.dll!_amsg_exit(int rterrnum=25) line 399 + 0x9 c msvcr71d.dll!_purecall() line 53 + 0x7 c myapp.exe!odprotocolextensionimpl<odrxclass>::~odp rotocolextensionimpl<odrxclass>() + 0x52 c++ msvcr71d.dll!doexit(int code=0, int quick=0, int retcaller=0) line 376 c msvcr71d.dll!exit(int code=0) line 303 + 0xd c myapp.exe!wwinmaincrtstartup() line 406 c kernel32.dll!77e987e7() ntdll.dll!77889964() ntdll.dll!77889964() problem is there is no source for the odprotocolextensionimpl and in the doc it is not mentioned! thanx rob have you called all *uninitialize() methods before exiting the application? one uninitialize per each initialize in reverse order: code: odinitialize(&svcs); ::odrxinitmodelergeometry(); // exprotocolextension theexprotocolextensionobject; // theexprotocolextensionobject.initialize(); ...... // theexprotocolextensionobject.uninitialize(); ::odrxuninitmodelergeometry(); oduninitialize(); sergey slezkin thanx thats the problem i called oduninitialize(); in the destructor of the class where i used the dwgdirect stuff! so i moved it to the appinstance now its fine! thanx again! |
所有的时间均为北京时间。 现在的时间是 01:16 AM. |