我正在尝试使用代码块和metatrader4创建一个基本的hello,并尝试在条形版本中这样做。我的编译.dll和.def与.mq4文件位于同一个dir中。
文件中的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发布于 2014-08-11 19:39:03
将其编译为脚本,以避免EA-依赖关系。
对于快速测试,脚本是一种比EA更好的MQL4 4-目标“包装器”,因为在EA包装的HelloWorld中,您依赖于
( A) 正在登录到MT4/服务器上的(位于现有+ live帐户上)
+
( B) 在MON/FRI MarketHours期间运行
+
( C) 耐心等待,直到下一个外汇市场事件发送至少一个StreamQuote事件,
为了让你的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-07-26 21:10:26
您需要声明将要使用的函数列表,如下所示:
> #import "file_name"
> func1 define;
> func2 define;
> ...
> funcN define;
> #import看看这个:http://docs.mql4.com/basis/preprosessor/import
https://stackoverflow.com/questions/24953712
复制相似问题