Index: tol/LoadDynLib/LoadDynLib.cpp
===================================================================
--- tol/LoadDynLib/LoadDynLib.cpp	(revision 4969b6eee648e2437a7228f8a43cf2177d3bb3e9)
+++ tol/LoadDynLib/LoadDynLib.cpp	(revision d72f0e532d0f461e1075a3ffb0cc7bb76af950ba)
@@ -33,4 +33,5 @@
 #include <tol/tol_blanguag.h>
 #include <tol/tol_btxtgra.h>
+#include <tol/tol_bdatgra.h>
 #include <tol/tol_bdir.h>
 
@@ -74,4 +75,43 @@
 {
   return(new BGraContensP<BNameBlock>("", new BNameBlock));
+}
+
+  //--------------------------------------------------------------------
+  DeclareContensClass(BDat, BDatTemporary, BDatLoadDynLib);
+  DefExtOpr(1, BDatLoadDynLib, "LoadDynLib", 1, 2, "Text Text",
+  "(Text libraryPath [, Text libraryName])",
+  I2("Link a dynamic library without TOL built-in functios.",
+     "Enlaca una librería dinámica sin funciones TOL nativas."),
+     BOperClassify::Statistic_);
+  void BDatLoadDynLib::CalcContens()
+//--------------------------------------------------------------------
+{
+  if(CheckNonDeclarativeAction("LoadDynLib")) { return; }
+  BText& libraryPath = Text(Arg(1));
+  BText libraryName = GetFilePrefix(libraryPath);  
+  if(Arg(2))
+  {
+    libraryName = Text(Arg(2));
+  }
+//Std(BText("\nTRACE BLoadDynLib::Evaluator 1 libraryPath=")+libraryPath);
+//Std(BText("\nTRACE BLoadDynLib::Evaluator 2 libraryName=")+libraryName);
+  BUserNameBlock* unb = NULL;
+
+  lt_dlhandle handleLib;
+
+  // abro la DynLib
+  handleLib = lt_dlopen( libraryPath );
+  if ( !handleLib ) 
+  {
+  //Std(BText("\nTRACE BLoadDynLib::Evaluator 3 lt_dlerror='")+lt_dlerror()+"'");
+    BText reason( lt_dlerror( ) );
+    Error(BText("[LoadDynLib(\"")+libraryPath+"\")]"+" \n"
+    "  lt_dlopen error:'"+reason+"'");
+    contens_ = false;
+  } 
+  else
+  {
+    contens_ = true;
+  }
 }
 
