2

我正在尝试使用代码块和 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
4

2 回答 2

1

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

对于快速测试,对于您的目标而言, SCRIPT比 EA 更好的 MQL4“包装器”,因为在 EA 包装的 HelloWorld 中,您依赖

A)登录到MT4 /服务器(在现有 + 真实经纪人账户

+

B)在周一/周五MarketHours运行

+

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

以使您的 < 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(),
                "]]]"
              );
       }
于 2014-08-11T19:39:03.270 回答
-1

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

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

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

于 2014-07-26T21:10:26.313 回答