= Carga de librerías de enlace dinámico en TOL = La función built-in de TOL {{{ NameBlock LoadDynLib(Text libraryPath) }}} permite 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. Devuelve un NameBlock en lugar de objetos globales para poder mantener los requisitos de modularidad. == Uso 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 = [[ ... 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 de enlace dinámico en TOL == {{{ #!cpp /* .cpp TOL Dynamic Library 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(, , , ) }}}