Changeset c566d35 in tol
- Timestamp:
- Aug 4, 2010, 11:45:43 PM (16 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- 1a564aa
- Parents:
- 21dc548
- File:
-
- 1 edited
-
tol/LoadDynLib/LoadDynLib.cpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tol/LoadDynLib/LoadDynLib.cpp
r21dc548 rc566d35 29 29 #endif 30 30 31 #include "tol_LoadDynLib.h" 31 32 #include <tol/tol_bnameblock.h> 32 33 #include <tol/tol_blanguag.h> … … 38 39 typedef void* (*get_nb_t)(void); 39 40 41 static int lt_dlinit_ = lt_dlinit(); 40 42 41 43 //-------------------------------------------------------------------- 42 BExternalOperator* NewExternalOperator( 44 TOL_API BUserCode* NewMethod( 45 BNameBlock& nb, 46 const BText& file, 43 47 const BText& name, 44 48 BGrammar* gra, … … 49 53 const BText& args, 50 54 const BText& desc, 51 BOperClassify* cl )55 BOperClassify* cl) 52 56 //-------------------------------------------------------------------- 53 57 { 54 return(new BExternalOperator( 55 name,gra,grammars,evaluator,min,max,args,desc,cl)); 58 BExternalOperator* opr = new BExternalOperator( 59 "",gra,grammars,evaluator,min,max,args,desc,cl); 60 opr->PutCppFile(file), 61 opr->PutName(name); 62 BCode code; 63 BUserCode* uCode = new BContensCode("", code, desc); 64 uCode->Contens().PutOperator(opr); 65 uCode->PutName(name); 66 uCode->PutDescription(desc); 67 nb.AddElement(uCode,true); 68 return(uCode); 56 69 } 57 70 … … 98 111 libraryName = Text(Car(Cdr(arg))); 99 112 } 113 //Std(BText("\nTRACE BLoadDynLib::Evaluator 1 libraryPath=")+libraryPath); 114 //Std(BText("\nTRACE BLoadDynLib::Evaluator 2 libraryName=")+libraryName); 100 115 BUserNameBlock* unb = NULL; 101 //VBR: Jorge, inserta aquí el código que enlaza con la dll y pon102 //el resultado en unb para devolverlo103 116 104 117 lt_dlhandle handleLib; … … 106 119 // abro la DynLib 107 120 handleLib = lt_dlopen( libraryPath ); 108 if ( !handleLib ) { 121 if ( !handleLib ) 122 { 123 //Std(BText("\nTRACE BLoadDynLib::Evaluator 3 lt_dlerror='")+lt_dlerror()+"'"); 109 124 BText reason( lt_dlerror( ) ); 110 Error( reason ); 111 } else { 125 Error(BText("[LoadDynLib] lt_dlerror:'")+reason+"'"); 126 } 127 else 128 { 112 129 // si OK, pido el nameblock 113 130 BText functionName( "GetDynLibNameBlock" ); 114 131 functionName += libraryName; 115 132 //Std(BText("\nTRACE BLoadDynLib::Evaluator 4 functionName=")+functionName); 116 133 get_nb_t getNameBlock = 117 134 reinterpret_cast<get_nb_t>( lt_dlsym( handleLib, functionName ) ); 118 if ( !getNameBlock ) { 135 if ( !getNameBlock ) 136 { 137 //Std(BText("\nTRACE BLoadDynLib::Evaluator 5 lt_dlerror='")+lt_dlerror()+"'"); 119 138 BText reason( lt_dlerror( ) ); 120 Error( reason ); 121 } else { 139 Error(BText("[LoadDynLib] lt_dlerror:'")+reason+"'"); 140 } 141 else 142 { 143 //Std(BText("\nTRACE BLoadDynLib::Evaluator 6")); 122 144 unb = reinterpret_cast<BUserNameBlock*>((*getNameBlock)()); 123 if ( !unb ) { 124 Error( "No se pudo convertir a NameBlock: dynamic_cast<BUserNameBlock*>" ); 145 if ( !unb ) 146 { 147 //Std(BText("\nTRACE BLoadDynLib::Evaluator 7")); 148 Error(BText("[LoadDynLib]")+ 149 "No se pudo convertir a NameBlock: dynamic_cast<BUserNameBlock*>" ); 125 150 } 126 151 } 127 152 } 153 //Std(BText("\nTRACE BLoadDynLib::Evaluator 8")); 128 154 //Al final hay que destruir la lista de argumentos antes de salir 129 155 DESTROY(arg);
Note: See TracChangeset
for help on using the changeset viewer.
