如何从MQL4中导入的DLL函数返回结构?

时间:2016-09-20 13:35:00

标签: mql4 metatrader4

有没有办法从MQL4中的导入函数返回结构,而不必将其作为参数传递并创建memcpy?

1 个答案:

答案 0 :(得分:0)

对任何类型的DLL接口都要谨慎,MQL4文档声明:

  

传递参数
简单类型的所有参数都按值传递,除非明确指出它们是通过引用传递的。传递字符串时,传递复制字符串的缓冲区地址;如果一个字符串是通过引用传递的,那么该字符串的缓冲区地址不会被复制,而是传递给从DLL导入的函数。

结构包含动态数组[] 字符串,其他复杂结构,以及静态或< 枚举标记对象的em> dynamic arrays [] 不能作为参数传递给导入的函数

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

更多故障适用......然后如何使它工作?

可能是一个直接的,异构的多方分布式处理,它比函数调用更能传达结果,独立于维护DLL导入的函数API变化的所有噩梦,是一种更安全的方式。在过去的几年中使用这种方法,并且因为 - MQL4.56789 string -s没有问题,这些方法仍然存在{{1 - 并且默默地开始变为 string -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