Changeset 171 in Sophya for trunk/SophyaPI/PIext/servnobjm.cc


Ignore:
Timestamp:
Dec 21, 1998, 9:49:55 AM (27 years ago)
Author:
ercodmgr
Message:

Adaptation a PDynLinkMgr Reza 21/12/98

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PIext/servnobjm.cc

    r165 r171  
    22#include <stdlib.h>
    33#include <ctype.h>
    4 
    5 #include <dlfcn.h>
    64
    75#include <iostream.h>
     
    4442{
    4543TmpDir = tmpdir;
     44PDynLinkMgr::SetTmpDir(tmpdir);
    4645mImgapp = app;
    47 dlhandle = NULL;
     46dynlink = NULL;
    4847InitGrAttNames();
    4948}
     
    339338string fnameobj = fnamer + ".o" ;
    340339string fnameso = fnamer + ".so";
    341 string cmd;
    342 int rc;
    343 
    344 
    345 // Compilation du fichier
    346 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 #else
    356   cmd = "ld -shared -o " + fnameso + " " + fnameobj + " -lm -lc";
    357 #endif
    358 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   }
    363340
    364341//  Le link dynamique
    365342CloseDLL();
    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;
     343dynlink = PDynLinkMgr::BuildFromCFile(fname);
     344if (dynlink == NULL) {
     345  cerr << "NamedObjMgr/LinkFunctionFromFile_Erreur: Erreur ouverture SO " << endl;
    372346  return(NULL);
    373347  }
    374348
    375 DlFunction retfunc = (DlFunction) dlsym(dlhandle, funcname);
     349DlFunction retfunc = dynlink->GetFunction(funcname);
    376350if (retfunc == NULL) {
    377351  string sn = funcname;
     
    386360void Services2NObjMgr::CloseDLL()
    387361{
    388 if (dlhandle) dlclose(dlhandle);    dlhandle = NULL;
     362if (dynlink) delete dynlink;   dynlink = NULL;
    389363}
    390364
Note: See TracChangeset for help on using the changeset viewer.