#import "MemoryDLL.dll"void fn(double j[]); // Подозреваю что так отдается адрес?#import
int start()
{
double dVal[1];
fn(dVal);
retutn(0);
}
在这些变体中,dll变量可以正常取用。
extern"C" __declspec(dllexport) void fn(double &j); // Почему так работает????
// и такextern"C" __declspec(dllexport) void fn(double *j); // Думаю что должно работать только так
现在它给我...
2012.02.26 15:47:46 测试文件C:\Users\openlive\AppData\Roaming\MetaQuotes\Terminal\9C3619DDD286B60B1DB9B9989A2FFC701\MQL5\Files\signal10000.csv打开错误[32] 。
首先,检查你在C:\Users\openlive\AppData\Roaming\MetaQuotes\Terminal\9C3619DDD286B60B1DB9B989A2FFC701\MQL5Files\ 文件夹里有什么。
第二:MQL5中没有错误32。 很奇怪...你是否在尝试打开文件后检查句柄,在尝试打开文件后检查最后的错误代码?
什么是 "数学模式"?
什么是 "数学计算模式"?
在这种模式下,只有OnTester()被调用;然而,OnTester()的复杂性和计算量不受限制。 如果你计算你的Expert Advisor在给定输入参数下的利润,你可以使用测试仪的遗传算法 进行优化。
请帮助我理解,我的大脑正在沸腾。
1.我理解,切换到x64操作系统与不可能在4个字节上 "分割 "出超过4GB的内存这一事实有关。我有x64操作系统,为什么指针会占用4个字节(这不仅涉及mql,也涉及C++))?
2.关于MT4的问题:为什么我调用dll函数时。
在这些变体中,dll变量可以正常取用。
虽然我认为指针和引用,从概念上来说应该是不兼容的,例如,在我的例子中,指向双倍的指针需要4个字节。
它的工作原理是这样的。
不起作用。
至少,它将如何工作(我想传递多个数组)?我不想通过回溯来做。
至少如何正确操作(我想传递几个数组)?因为我不想走后门。
而在MQL中,谁会把&放在函数声明中?
是的,这可能是正确的做法。但无论如何,MQL在C语言中并不工作(我可能是错的)。
是的,这可能是正确的做法。反正只有MKL在某种程度上不能通过C来工作(我可能是错的)。
在传递方面有一个区别--所有的东西都需要通过引用来传递,而通过指针'*'只能传递类对象。
我以为一个基本的内存区域由两部分组成--地址和值。如果传输地址,它必须在某个变量中,在 "值 "字段中包含被传输区域的地址。这就是为什么我不明白这样的变体如何能同时正确工作。
我们可以尝试找到一种解释,比如--它是 "按原样 "传输的内存区域,接收方决定如何处理它(将地址写入数值或复制地址)。但这一假设被破坏了,因为它并不是这样工作的。
我们可以再次尝试找到解释--在第一个重复中,"值 "字段中的地址被作为输入,而接收方决定如何处理它。与此相反的是,在C++中,编译器说不要这样做,在它看来还是如此。
或者这样。
总而言之,我只看到了矛盾。你问,我答。
我得出的结论是,链接和指针在本质上是一回事。有轻微的差异。
非常重要的一点是:如果被调用的函数 有一个引用或指针作为参数,那么这个地址实际上是被传递的。在从dll调用时,理解这一点非常重要。
你能告诉我如何找到主线和随机指标线交叉的确切数值吗?
在视觉上很容易,但如何在程序上实现它?