Orden de búsqueda de archivos de biblioteca
Si el nombre de la biblioteca se especifica sin ruta o con una ruta relativa, la búsqueda se realiza según distintas reglas en función del tipo de biblioteca.
Las bibliotecas del sistema (DLL) se cargan según las reglas del sistema operativo. Si la librería ya está cargada (por ejemplo, por otro Asesor Experto, o incluso desde otro terminal de cliente lanzado en paralelo), entonces la llamada va a la librería ya cargada. De lo contrario, la búsqueda sigue la secuencia siguiente:
- La carpeta desde la que se lanzó el programa EX5 compilado que importó la DLL.
- La carpeta MQL5/Libraries.
- La carpeta donde se encuentra el terminal MetaTrader 5 en ejecución.
- La carpeta del sistema (normalmente dentro de Windows)
- El directorio de Windows
- La carpeta de trabajo actual del proceso del terminal (puede ser diferente de la carpeta de ubicación del terminal).
- Carpetas listadas en la variable de sistema PATH.
En las directivas #import no se recomienda utilizar un nombre de módulo cargable completamente cualificado de la forma Drive:/Directory/FileName.dll.
Si la DLL utiliza otra DLL en su trabajo, en ausencia de la segunda DLL, la primera no podrá cargarse.
La búsqueda de una biblioteca EX5 importada se realiza en la secuencia siguiente:
- Carpeta para iniciar el programa EX5 de importación.
- Carpeta MQL5/Libraries de instancia de terminal específica.
- Carpeta MQL5/Libraries de la carpeta común de todos los terminales MetaTrader 5 (Common/MQL5/Libraries).
Antes de cargar un programa MQL se forma una lista general de todos los módulos de biblioteca EX5, donde los módulos compatibles deben ser utilizados tanto desde el propio programa como desde bibliotecas de esta lista. Se llama lista de dependencias y puede convertirse en un «árbol» muy ramificado.
Para las bibliotecas EX5, el terminal también proporciona una descarga única de módulos reutilizables.
Independientemente del tipo de biblioteca, cada instancia de la misma trabaja con sus propios datos relacionados con el contexto del Asesor Experto, script, servicio o indicador de llamada. Las librerías no son una herramienta de acceso compartido a variables o arrays MQL5.
Las bibliotecas de EX5 y DLL se ejecutan en el subproceso del módulo de llamada.
No hay medios regulares para encontrar en el código de la biblioteca desde donde se cargó.