Changeset 171 in Sophya for trunk/SophyaPI/PIext/servnobjm.cc
- Timestamp:
- Dec 21, 1998, 9:49:55 AM (27 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PIext/servnobjm.cc
r165 r171 2 2 #include <stdlib.h> 3 3 #include <ctype.h> 4 5 #include <dlfcn.h>6 4 7 5 #include <iostream.h> … … 44 42 { 45 43 TmpDir = tmpdir; 44 PDynLinkMgr::SetTmpDir(tmpdir); 46 45 mImgapp = app; 47 d lhandle= NULL;46 dynlink = NULL; 48 47 InitGrAttNames(); 49 48 } … … 339 338 string fnameobj = fnamer + ".o" ; 340 339 string fnameso = fnamer + ".so"; 341 string cmd;342 int rc;343 344 345 // Compilation du fichier346 cmd = "cc -c -o " + fnameobj + " " + fname;347 rc = system(cmd.c_str());348 349 if (rc != 0) {350 printf("LinkFunctionFromFile_Do> %s (Rc=%d)\n", cmd.c_str(), rc);351 return(NULL);352 }353 #if defined(OSF1)354 cmd = "ld -shared -o " + fnameso + " -all " + fnameobj + " -none -lm -lc";355 #else356 cmd = "ld -shared -o " + fnameso + " " + fnameobj + " -lm -lc";357 #endif358 rc = system(cmd.c_str());359 if (rc != 0 ) {360 printf("LinkFunctionFromFile_Do> %s (Rc=%d)\n", cmd.c_str(), rc);361 return(NULL);362 }363 340 364 341 // Le link dynamique 365 342 CloseDLL(); 366 dlhandle = dlopen(fnameso.c_str(), RTLD_NOW); 367 if (dlhandle == NULL) { 368 string sn = fnameso; 369 cerr << "NamedObjMgr/FunctionFromFile_Erreur: Erreur ouverture SO " << sn << endl; 370 sn = dlerror(); 371 cerr << "Loader Error (dlerror()) :" << sn; 343 dynlink = PDynLinkMgr::BuildFromCFile(fname); 344 if (dynlink == NULL) { 345 cerr << "NamedObjMgr/LinkFunctionFromFile_Erreur: Erreur ouverture SO " << endl; 372 346 return(NULL); 373 347 } 374 348 375 DlFunction retfunc = (DlFunction) dlsym(dlhandle,funcname);349 DlFunction retfunc = dynlink->GetFunction(funcname); 376 350 if (retfunc == NULL) { 377 351 string sn = funcname; … … 386 360 void Services2NObjMgr::CloseDLL() 387 361 { 388 if (d lhandle) dlclose(dlhandle); dlhandle= NULL;362 if (dynlink) delete dynlink; dynlink = NULL; 389 363 } 390 364
Note:
See TracChangeset
for help on using the changeset viewer.