在metatrader4中创建一个基本DLL

creating a basic dll in metatrader4

本文关键字:一个 DLL metatrader4 创建      更新时间:2023-10-16

我正在尝试使用代码块和metatrader4创建一个基本的hello world dll,并试图在条纹版本中这样做。我的编译。dll和。def在与。mq4文件相同的目录中。

文件test.mq4

#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
//#import "gimmeDLL.dll"
//   string GetStringValue(string) define;
//#import
#import "gimmeDLL.dll"
    string GetStringValue(string) define;
#import
void OnStart()
  {
   GetStringValue();
  }
dll 的main.cpp中的

#define WIN32_LEAN_AND_MEAN  // Exclude rarely-used stuff from Windows headers
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace std;
#define MT4_EXPFUNC __declspec(dllexport)
void MT4_EXPFUNC GetStringValue()
  {
   cout << "Hello, World" << endl;
  }

in gimmeDLL.def I have

LIBRARY gimmeDLL
EXPORTS
    GetStringValue
误差

'define' - semicolon expected   marketDump.mq4  6   34
'define' - declaration without type marketDump.mq4  6   34
'GetStringValue' - wrong parameters count   marketDump.mq4  11  4

将其编译为SCRIPT,以避免对ea的依赖

对于快速测试,SCRIPT是比EA更好的MQL4"包装器",因为在EA包装的helloworld中,您依赖于

A) 正在登录到MT4/服务器(在现有的+活跃的经纪人帐户)

+

B) 正在运行在MON/FRI MarketHours

+

C) 耐心等待,直到下一个外汇市场事件发送至少一个StreamQuote事件,

为了使你的<<em>localhost> MT4/Terminal 处理你的单行代码…

,"如何"?

#import "gimmeDLL.dll"                       // MQL4-import-section-start-marker--------
    string GetStringValue();                 //      interface definition for compile-time processing
#import                                      // MQL4-import-section-end-marker----------
void   OnInit() {                            // MQL4-on-init(), for pre-Build-578 Terminal, use rather int init(){ ...; return(0); } <code-constructor>
       Comment( "DLL-call test",             // MQL4-UI-printing facility
                "nhas produced a string == [[[",
                GetStringValue(),
                "]]]"
              );
       }

你需要像这样声明你将要使用的函数列表:

> #import "file_name"
>     func1 define;
>     func2 define;
>     ...
>     funcN define;
> #import

看看这个:http://docs.mql4.com/basis/preprosessor/import