dingmaotu / mql-zmq

ZMQ binding for the MQL language (both 32bit MT4 and 64bit MT5)
Apache License 2.0
544 stars 298 forks source link

【运行错误】在SocketOptions.mqh的第206行 #1

Closed 28554010 closed 7 years ago

28554010 commented 7 years ago

运行脚本的时候遇到了这样的错误:

在SocketOptions.mqh的第206行: 'key' - parameter can be a dynamic array only

不知道如何解决这个问题。求帮忙!

dingmaotu commented 7 years ago

首先确保mt4是最新版本,我这边试着用静态数组作为函数参数,可以编译通过,也可以执行。 int setoption(uchar &a[]) {return a[0];} int myfunction(uchar &a[32]) {return setoption(a);}

如果是最新版本,能发一下你的脚本的相关部分吗?我自己试着调用了一下curve key的函数,没有出现报错

hohomi commented 7 years ago

您好。我用的版本是4.00 build 1065。我暂时是这样解决的: 把#define SOCKOPT_CURVE_KEY(KeyType,Macro) 下面两处uchar &key[32]改成了uchar &key[] 就是把静态数组变动态数组。我用的脚本就是您写的HelloWorldExample。 修改后就可以运行!您看对不对。

dingmaotu commented 7 years ago

@hohomi 我加上32的限制,主要是为了类型安全,确保不会传入随意大小的数组。如果你那边不能编译通过,你那样解决是OK的。 不过建议你安装最新版本的MT4,metaeditor版本是5.00 Build 1562。新版添加了很多功能。

28554010 commented 7 years ago

好的。原来是我版本太旧。谢谢您的帮助!