Here's the caller:
Code: Select all
void* lhandle = dlopen("./libmylibrary.so", RTLD_NOW);
if (lhandle) {
typedef void (* processDataset)(DcmFileFormat *);
processDataset lprocessDset = (processDataset)dlsym(lhandle, "processDataset");
if (!lprocessDset) {
dlclose(lhandle);
return;
}
lprocessDset(ff);
dlclose(lhandle); // if I call dlclose(..) my app hangs
}
Code: Select all
extern "C" {
void processDataset(DcmFileFormat *ff)
{
OFString lModality;
DcmDataset * dataset = ff->getDataset(); // here ff is getting corrupted
dataset->findAndGetOFString(DCM_Modality, lModality);
dataset->putAndInsertOFStringArray(DCM_AccessionNumber, '123');
}
}
Thanks in advance.