有没有办法从MQL4中的导入函数返回结构,而不必将其作为参数传递并创建memcpy?
答案 0 :(得分:0)
对任何类型的DLL接口都要谨慎,MQL4文档声明:
传递参数
简单类型的所有参数都按值传递,除非明确指出它们是通过引用传递的。传递字符串时,传递复制字符串的缓冲区地址;如果一个字符串是通过引用传递的,那么该字符串的缓冲区地址不会被复制,而是传递给从DLL导入的函数。
结构包含动态数组[] ,字符串,类,其他复杂结构,以及静态或< 枚举标记对象的em> dynamic arrays [] ,不能作为参数传递给导入的函数。
当将数组传递给DLL时,总是传递数据缓冲区开头的地址(与AS_SERIES
标志无关)。 DLL中的函数对AS_SERIES
标志一无所知,传递的数组是未定义长度的静态数组;应使用附加参数来指定数组大小。
更多故障适用......然后如何使它工作?
可能是一个直接的,异构的多方分布式处理,它比函数调用更能传达结果,独立于维护DLL导入的函数API变化的所有噩梦,是一种更安全的方式。在过去的几年中使用这种方法,并且因为 新 - MQL4.56789
string
-s没有问题,这些方法仍然存在{{1 - 并且默默地开始变为 string
-s等。
值得了解。