| Version 2 (modified by , 15 years ago) (diff) |
|---|
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
/*
<NAME>.cpp
TOL Dynamic Library
Purpose: ...
*/
#define LOCAL_NAMEBLOCK _local_nameblock_
static BUserNameBlock* _local_unb_ = new BGraContensP<BNameBlock>("", 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_<NAME>()
{
return(_local_unb_);
}
//Internal operator declaration
DeclareContensClass(...)
DefIntOpr(...)
//External operator declaration
DeclareContensClass(...)
DefExtOpr(...)
//Member declaration
DeclareLocalMember(<TYPE>, <MEMBER_NAME>, <MEMBER_DESCRIPTION>, <MEMBER>)
