在metatrader4中创建一个基本的dll

时间:2014-07-25 10:33:10

标签: c++ dll metatrader4

我正在尝试使用codeblocks和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;
  }

在gimmeDLL.def我有

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

2 个答案:

答案 0 :(得分:1)

将其编译为SCRIPT,以避免EA依赖

对于快速测试, SCRIPT 是更好的MQL4 - &#34;包装&#34;为了你的目标,而不是EA,因为在EA包装的HelloWorld中,你依赖

A)登录到MT4 /服务器上(在现有的+实时经纪人帐户

<强> +

在MON / FRI期间

B)正在运行 MarketHours

<强> +

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

所以 至于你的&lt; localhost &gt; MT4/Terminal 处理您的单行代码......

所以,&#34; HOW-TO&#34;?

#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(),
                "]]]"
              );
       }

答案 1 :(得分:-1)

您需要声明您将使用的功能列表,如下所示:

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

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