Description des Fonctions Externes

Les fonctions externes décrites dans un autre module doivent être décrites explicitement. La description inclut le type de retour, le nom de la fonction et les paramètres d'entrée avec leurs types. L'absence de description peut provoquer des erreurs au moment de la compilation, du build ou de l'exécution du programme. Lors de la description d'un objet externe, utilisez le mot-clé #import indiquant le module.

Exemples :

#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

Grâce au mot-clé import, il est facile de décrire des fonctions qui sont appelées depuis une DLL externe ou une bibliothèque EX5 compilée. Les bibliothèques EX5 sont des fichiers ex5 compilés ayant la propriété library. Seules les fonctions décrites avec le modificateur export peuvent être importées depuis les bibliothèques EX5.

Veuillez noter que les bibliothèques DLL et EX5 doivent avoir des noms différents (indépendamment du répertoire où elles sont situées) si elles sont importées ensemble. Toutes les fonctions importées ont une portée correspondant au "nom de fichier" de la bibliothèque.

Exemple :

#import "kernel32.dll"
   int GetLastError();
#import "lib.ex5"
   int GetLastError();
#import
 
class CFoo
  {
public:
   int            GetLastError() { return(12345); }
   void           func()
     {
      Print(GetLastError());           // appel de la méthode de classe
      Print(::GetLastError());         // appel de la fonction MQL5
      Print(kernel32::GetLastError()); // appel de la fonction de la DLL kernel32.dll
      Print(lib::GetLastError());      // appel de la fonction de la bibliothèque EX5 lib.ex5
     }
  };
 
void OnStart()
  {
   CFoo foo;
   foo.func();
  }

Voir aussi

Surcharge, Fonctions Virtuelles, Polymorphisme