//Test.mqhclass A {};
class B { public:
B() { f(); }
A *g() { returnNULL; }
void f()
{
void *x = g();
if ( true )
return;
delete x; //в build 1650 не работает даже если до delete никогда (!) не доходит
//а ошибка при выполнении возникает именно из-за наличия этой строки
//и указатель в исходном коде действительный (есть проверка)
}
};
//Test.mq5#include "Test.mqh"#import "Test2.ex5"
A *f();
#import
voidOnStart()
{
f();
}
//Test2.mq5#property library#include "Test.mqh"static B b;
A *f() export { returnNULL; }
プロでコンパイルして実行できるようになればOK )
何が悪いのか、よくわからないんです。すべてがうまくいく。
何が悪いのか、よくわからないんです。すべてがうまくいく。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
バグ、バグ、質問
A100, 2017.08.17 18:45
そう、それはもうわかったことなんです。しかし、問題は、ソースではこのmemeberが実は配列であることで、簡単のためにスカラーを先に扱うことにした(だった)。しかし、配列の場合、同じような仕掛けはうまくいきません。メンバ関数内で配列を静的にドラッグする必要がありました。
しかし、配列の場合、同じトリックは通用しません。メンバ関数内で配列を静的にドラッグする必要がありました。
これはすでにコンパイラのエラーです - サービスデスクに伝えるべきです。
1650を構築する。複数の.ex5モジュール(mainとlibrary)がリンクされている場合、全く動作 しません。どこもかしこも、このような形のエラーです。
2017.08.18 01:49:59.759 Draw (USDJPY,H1) 'yyyy.ex5' で 'xxx' が見つからない。
以前はすべてうまくいっていたのに。現在でも、MetaEditor 1646 + MetaTrader 1650をコンパイルすると、すべて動作します。
明らかにMetaEditor 1650のエラーがあります。一方、.ex5ファイルはほぼ2倍の薄さです。なぜそのような実験をするのか。
コードの追加
結果は前回の記事で
ライブラリーは一般的なものです。ちなみに、この場合、返されたf()ポインタは使用されません - オプション1 (しかし、使用することができます - 以下のオプション2を参照してください)。Test.mq5をコンパイルしてもエラーメッセージが 出ないのは、コンパイラがクラス(A)を定義する必要がないことを意味しています。それにもかかわらず、実行中に次のエラーが発生しました: 'Test2.ex5' で 'f' が見つかりません。
さらに詳しく
Windowsの言語を変更しないと幸せになれない...。