[MQL4] Library に strict を付けてはいけない
@ MetaTrader 4.00 Build 1090 (on Windows 10 Pro Ver. 1803)
MetaTrader でライブラリを作成する際、#property strict
を書いてしまうと、実行時に以下のエラーが出てしまいます1。
libsumtest USDJPY,H1: unresolved import function call
#property strict
を消すと正しく動作します。
なお、ライブラリの修正後はライブラリをコンパイルし直すのをお忘れなく。
参考
一応、検証した方法を載せておきます。
検証方法
以下のようにライブラリとヘッダを用意。
1 2 3 4 5 6 7 | #property library #property strict int sum( int a, int b) { return a + b; } |
1 2 3 | #import "libsum.ex4" int sum( int a, int b); #import |
libsum.mq4
をコンパイルして、Libraries/libsum.ex4
が作成されたことを確認します。
そして、それをスクリプトで読み込みます。
1 2 3 4 5 6 7 8 9 10 | #property version "1.00" #property strict #include <libsum.mqh> void OnStart() { int result = sum(1, 2); Print (result); } |
これを実行すると unresolved import function call
エラー。
修正
ライブラリ内の #property strict
を削除2。
1 2 3 4 5 6 7 | #property library // #property strict int sum( int a, int b) { return a + b; } |
再コンパイルして、Libraries/libsum.ex4
が更新されたことを確認します。
スクリプト libsumtest
を実行すると正しく実行されました。