外部関数の記述

別のモジュールで定義された外部関数は明示的に記述されるべきです。記述は、戻り型、関数名及び入力パラメータとその型を含みます。そのような記述が存在しないとコンパイル、ビルド、またはプログラムの実行中にエラーが起こることがあります。外部オブジェクトを記述する時は#import キーワードを使用してモジュールを示します。

例:

#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

import の助けを借りれば、外部 DLL またはコンパイル済みの EX5 ライブラリから呼び出される関数の記述が容易に出来ます。EX5ライブラリは library プロパティを持つ、コンパイル済みの ex5 ファイルです。export 修飾子 のついた関数のみが EX5 ライブラリからインポート出来ます。

DLL と EX5 ライブラリが一緒にインポートされる場合は(配置されているディレクトリに関係なく)別の名称を持つ必要があるのでご注意ください。インポートされた関数は全てライブラリの「ファイル名」に対応するスコープの解像度を持っています。

例:

#import "kernel32.dll"
  int GetLastError();
#import "lib.ex5"
  int GetLastError();
#import
 
class CFoo
 {
public:
  int           GetLastError() { return(12345); }
  void           func()
    {
    Print(GetLastError());           // クラスメソッドの呼び出し
    Print(::GetLastError());         // MQL5 関数の呼び出し
    Print(kernel32::GetLastError()); // kernel32.dll からの DLL ライブラリの呼び出し
    Print(lib::GetLastError());     // lib.ex5 からの EX5 ライブラリ関数の呼び出し
    }
 };
 
void OnStart()
 {
  CFoo foo;
  foo.func();
 }

参照

オーバーロード仮想関数ポリモーフィズム