首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在metatrader4中创建基本动态链接库

在metatrader4中创建基本动态链接库
EN

Stack Overflow用户
提问于 2014-07-25 10:33:10
回答 2查看 6.8K关注 0票数 2

我正在尝试使用代码块和metatrader4创建一个基本的hello,并尝试在条形版本中这样做。我的编译.dll和.def与.mq4文件位于同一个dir中。

文件中的test.mq4

代码语言:javascript
复制
#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中

代码语言:javascript
复制
#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我有

代码语言:javascript
复制
LIBRARY gimmeDLL

EXPORTS
    GetStringValue

错误

代码语言:javascript
复制
'define' - semicolon expected   marketDump.mq4  6   34
'define' - declaration without type marketDump.mq4  6   34
'GetStringValue' - wrong parameters count   marketDump.mq4  11  4
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-11 19:39:03

将其编译为脚本,以避免EA-依赖关系。

对于快速测试,脚本是一种比EA更好的MQL4 4-目标“包装器”,因为在EA包装的HelloWorld中,您依赖于

( A) 正在登录到MT4/服务器上的(位于现有+ live帐户上)

+

( B) 在MON/FRI MarketHours期间运行

+

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

为了让你的MT4/Terminal处理你的单行代码.

所以,“怎么做”?

代码语言:javascript
复制
#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
EN

Stack Overflow用户

发布于 2014-07-26 21:10:26

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

代码语言:javascript
复制
> #import "file_name"
>     func1 define;
>     func2 define;
>     ...
>     funcN define;
> #import

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24953712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档