2016-09-20 98 views

回答

0

可以与任何类型的DLL的接口,MQL4文档状态的谨慎:

传递参数
简单类型的所有参数由值传递,除非它被明确地表示,他们是通过引用传递。当一个字符串被传递时,复制字符串的缓冲区地址被传递;如果字符串是通过引用传递的,则不复制该字符串的缓冲区的地址将传递给从DLL导入的函数。

结构包含动态数组[],其它复杂结构,以及静态动态阵列的[] 枚举 erated对象不能作为参数传递给导入的函数

将数组传递给DLL时,数据缓冲区的开始地址总是被传递(不管AS_SERIES标志)。 DLL中的函数对AS_SERIES标志一无所知,传递的数组是一个未定义长度的静态数组;应该使用附加参数来指定数组大小。

更多的小故障适用...那么如何使它工作?

也许是一种直接的,异构的多方分布式处理,它比函数调用的通信结果要比独立于维护DLL导入函数API更改的所有恶梦都要独立,这是一种更安全的方法。使用这种方法在过去的几年,因为不是有没有的问题 - MQL4.56789string s表示,抓住保持string -s,默默地开始成为struct -s等

值得知道关于。

Anyway, welcome and enjoy the Wild Worlds of MQL4 -- may enjoy to click and read other posts on issues in MQL4/DLL integration and/or signalling/messaging in MQL4 domains. Feel free to ask more

+0

是的,他们都在谈论传递参数,但没有得到有关结构的返回值...我知道了谨慎采取有关导入DLL(我实际使用的葡萄酒和我执行的dll代码原生地感谢WineLib使用unix套接字作为通信点......)我猜想返回结构体没有这样的功能,并且必须复制请求......幸运的是,开销不应该那么大。 –

+0

如何不依赖于MQL4侧面代码语法约束和使用智能ZeroMQ多部分消息(可用于几乎所有最近使用的语言+主流遗产的包装器),并尽可能少地解码和解析任何其他种类的类似于结构的表示掩码? – user3666197

+0

据我所知,Zmq是一个便携式消息库,确实很有趣,但是在看了代码之后,它并没有做比确保消息等原子性更多的东西,所以就我而言,它是已经工作的“易”部分;) –

相关问题