Descrizione delle Funzioni Esterne

Le funzioni esterne definite in un altro modulo devono essere esplicitmente descritte. La descrizione include il tipo di ritorno, nume della funzione ed una serie di parametri di input con il loro tipi. L'assenza di tale descrizione può portare ad errori durante la compilazione, la costruzione o l'esecuzione di un programma. Quando si descrive un oggetto esterno, utilizzare la parola chiave # Import indicando il modulo.

Esempi:

#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

Con l'aiuto di import, è facile descrivere le funzioni che sono chiamate da DLL esterne o compilato librerie EX5. Librerie EX5 sono file ex5 compilati, che hanno la proprietà library. Solo funzioni descritte con il modificatore export possono essere importate da librerie EX5.

Si prega di tenere presente che le librerie DLL ed EX5 devono avere nomi diversi (a prescindere delle directory in cui si trovano) se sono importate insieme. Tutte le funzioni importate hanno la risoluzione ambito, corrispondente al "nome file" della libreria.

Esempio:

#import "kernel32.dll"
   int GetLastError();
#import "lib.ex5"
   int GetLastError();
#import
 
class CFoo
  {
public:
   int            GetLastError() { return(12345); }
   void           func()
     {
      Print(GetLastError());           // chiamata del metodo della classe
      Print(::GetLastError());         // chiamata della funzione MQL5
      Print(kernel32::GetLastError()); // chiamata della funzione libreria DLL dal kernel32.dll
      Print(lib::GetLastError());      // chiamata della funzione libreria EX5 da lib.ex5
     }
  };
 
voidOnStart()
  {
   CFoo foo;
   foo.func();
  }

Vedi anche

Overload, Funzioni Virtuali, Polimorfismo