Descripción de funciones externas

Las funciones externas, definidas en el otro módulo, deben ser descritas con claridad. La descripción incluye el tipo de valor retornado, el nombre de la función y el conjunto de parámetros de entrada con su tipo. La falta de esta descripción puede llevar a los errores en la fase de compilación, composición o ejecución del programa. Durante la descripción de un objeto externo, use la palabra clave #import indicando el módulo.

Ejemplos:

#import "user32.dll"
  int     MessageBoxW(int hWnd ,string szText,string szCaption,int nType);
  int     SendMessageW(int hWnd,int Msg,int wParam,int lParam);
#import "lib.ex5"
  double  round(double value);
#import

Mediante la importación es muy fácil describir las funciones invocadas de las DLL externas o de las bibliotecas compiladas EX5. Las bibliotecas EX5 son unos archivos ex-5 que tienen la propiedad de library. Sólo las funciones descritas con el modificador export pueden ser importadas de las bibliotecas EX5.

En caso de usar las bibliotecas DLL y EX5 simultáneamente, hay que recordar que tienen que tener diferentes nombres (independientemente de las carpetas de su ubicación). Todas las funciones importadas obtienen el campo de visibilidad correspondiente al "nombre del archivo" de la biblioteca.

Ejemplo:

#import "kernel32.dll"
   int GetLastError();
#import "lib.ex5"
   int GetLastError();
#import
 
class CFoo
  {
public:
   int            GetLastError() { return(12345); }
   void           func()
     {
      Print(GetLastError());           // llamada al método de clase
      Print(::GetLastError());         // llamada a la función MQL5
      Print(kernel32::GetLastError()); // llamada a la función kernel32.dll
      Print(lib::GetLastError());      // llamada a la función lib.ex5
     }
  };
 
void OnStart()
  {
   CFoo foo;
   foo.func();
  }

Véase también

Sobrecarga, Funciones virtuales, Polimorfismo