PDA

View Full Version : Descrição de Funções Externas



jssuser
20-12-2018, 04:41 PM
Descrição de Funções Externas
As funções externas definidas em outro módulo devem ser explicitamente descritas. A descrição inclui o tipo retornado, o nome da função e uma série dos parâmetros de entrada com os seus tipos. A ausência de tal descrição pode levar a erros ao compilar, construir e executar um programa. Ao descrever um objeto externo, use a palavra-chave #import indicando o módulo.

Exemplos:

#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

Com a ajuda do import, é fácil descrever funções que são chamadas de DLL externas ou de bibliotecas (libraries) EX5 compiladas. Bibliotecas (libraries) EX5 são arquivos ex5 compilados, que têm a propriedade library. Somente funções descritas com o modificador export pode ser importadas de bibliotecas (libraries) EX5.

Lembre-se de que as bibliotecas DLL e EX5 devem ter nomes diferentes (independentemente dos diretórios em que estão localizados) se forem importados juntos. Todas as funções importadas têm a resolução de escopo correspondente à biblioteca "file name".

Exemplo:

#import "kernel32.dll"
int GetLastError();
#import "lib.ex5"
int GetLastError();
#import

class CFoo
{
public:
int GetLastError() { return(12345); }
void func()
{
Print(GetLastError()); // Chamada do método de classe
Print(::GetLastError()); // chamar a função MQL5
Print(kernel32::GetLastError()); // Chamada da função de biblioteca DLL a partir do kernel32.dll
Print(lib::GetLastError()); // Chamada da função da biblioteca EX5 lib.ex5
}
};

void OnStart()
{
CFoo foo;
foo.func();
}