[[PageOutline]] = Librerías C++ built-in TOL de enlace dinámico = Las librerías de enlace dinámico en TOL permiten la carga de objetos y funciones creados en C++ para implementar tareas específicas que resulten demasiado lentas en TOL y no sean lo suficientemente generalizables como para formar parte de las utilidades globales del núcleo de TOL. == Carga de librerías C++ built-in TOL == La función built-in de TOL {{{ NameBlock LoadDynLib(Text libraryPath) }}} devuelve un NameBlock métodos y miembros escritos en C++ en una librería previamente compilada para su enlace dinámico. Una vez cargado el Nameblock no tiene nada de particular y puede ser usado como cualquier otro creado en el propio lenguaje TOL. == Uso de librerías C++ built-in TOL dentro de paquetes == No es posible crear un paquete de forma directa pero sí se puede usar como un miembro dentro de un paquete, adjuntándolo como recurso externo e incluyendo la llamada dentro del método StartActions. {{{ NameBlock MyPackage = [[ ... //At creation time is initialized as trivial NameBlock NameBlock Tools = [[ Real _unused]]; ... Set _.autodoc.nonTolResources = { [[ Set CrossPlatform = { [[ Text cpp="cpp" ]] } ... Real StartActions(Real void) { NameBlock Tools := LoadDynLib("cpp/tools.dll"); ... }; ]]; }}} == Creación de librerías C++ built-in TOL == {{{ #!cpp /* TOL Dynamic Library .cpp Purpose: ... */ #define LOCAL_NAMEBLOCK _local_nameblock_ static BUserNameBlock* _local_unb_ = new BGraContensP("", new BNameBlock); static BNameBlock& _local_nameblock_ = _local_unb_->Contens(); //Entry point of library returns the NameBlock to LoadDynLib //This is the only one exported function BUserNameBlock* get_local_unb_() { return(_local_unb_); } //Internal operator declaration DeclareContensClass(...) DefIntOpr(...) //External operator declaration DeclareContensClass(...) DefExtOpr(...) //Member declaration DeclareLocalMember(, , , ) }}}