外部函数描述
在其它模块中定义的外部函数必须明确描述。描述应包括返回类型, 函数名称和输入参数序列以及它们的类型。这些描述缺失则会在编译、整编,或执行程序时导致错误。当描述一个外部对象时, 使用关键字 #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 程序库被编译为 ex5 文件, 它具有 library (库文件) 属性。仅当函数以 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();
}
|
参阅
重载, 虚拟函数, 多态