Тема: не могу выгрузить программно dbx
ХЕЛП.
Хочу чтобы используемый dbx выгружался вместе с arx-ом, но не получается никак.
Пытаюсь делать так:
char *PathDBX; virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) { AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ; char ModuleName[_MAX_PATH+1]; GetModuleFileName(_hdllInstance,ModuleName,_MAX_PATH); PathDBX = new char[2*_MAX_PATH+1]; memset(PathDBX,'\0',2*_MAX_PATH+1); char *send = 0; if ((send = strrchr(ModuleName,'\\')) != NULL) { strncpy(PathDBX,ModuleName,send-ModuleName+1); strcat(PathDBX,"my.dbx"); } else if ((send = strrchr(ModuleName,'/')) != NULL) { strncpy(PathDBX,ModuleName,send-ModuleName+1); strcat(PathDBX,"my.dbx"); } else { strcpy(PathDBX,"my.dbx"); } if (!acrxLoadModule(PathDBX, true,true)) return AcRx::kRetError; return (retCode) ; } virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) { AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ; // TODO: Add your code here acrxUnloadModule(PathDBX,true); delete []PathDBX; return (retCode) ; }
так вот в результате dbx в автокаде (среди подгруженных приложений) исчезает, а созданные им объекты становятся прокси. НО! сам файл DBX остается открытым и к нему нет доступа, спасает только закрытие автокада. что я делаю не так?
ps: в load unload манипуляция с true-false не помогла.
pps: да, если объектов не создавать, только загрузить и сразу выгрузить, то все норм.
если создать объект, удалить и потом выгрузить - тоже не работает.