10分でできるMQL5用DLLの書き方、データのやりとり」についてのディスカッション。 - ページ 5

 
mql5 писал(а)  :

1) 端末のバージョンは32bitと64bitのどちらでしょうか?

2) dllのバージョンは32bitと64bitのどちらでしょうか?

1)選択肢はあるのか?ここから ダウンロードできるのはx86だけだと思うのですが・・・。

2)ディーゼル 32

 

MT5を再インストールしたところ、以下のような結果になりました。スクリプトを起動すると、 ログに 次の情報が表示されます。MQL5DLLSamples.dll'に関数 fnCalculateSpeedが見つかりません。

念のため、 Dependency Walkerの ライブラリのスクリーンショットを添付しておきます。

 
denkir:

MT5を再インストールしたところ、以下のような結果になりました。スクリプトを起動すると、 ログに 次の情報が表示されます。MQL5DLLSamples.dll'に関数fnCalculateSpeedが見つかりません

念のため、Dependency Walkerの ライブラリのスクリーンショットを添付しておきます。

再インストールした端末のビルド 番号を教えてください。
 
stringo:
再インストールした端末のビルド 番号を教えてください。
どうやら最新の240ビルドではなく、古いようです。
 
Renat писал(а) :
どうやら古いようで、明らかに最新の240ビルドではありません。

うん、絶対最後じゃないね...。

240 bildにアップグレードした後、スクリプトの最初の実行は問題なく動作しました。興奮しました。しかし、その後の実行はクラッシュするばかり。MT 4が並行して動いていた。

 

再起動後、すべて正常に動作しているようです:-))

関数fnCrashTest(int arr ) をコメントアウトしました。

ご協力いただいた皆様、ありがとうございました。

 
一般に、DLLを使った計算速度が2.5倍以上になったことはありません。これはMQL5の高速 性を示すもので、コードの保護が必要な場合や「重い」計算が必要な場合を除き、ほとんどの取引作業において、わざわざDLLを使う意味はないでしょう。
 
joo:
一般に、DLLを使った計算速度が2.5倍以上になったことはありません。これはMQL5の高速性を示すもので、コードの保護が必要な場合や「重い」計算が必要な場合を除き、ほとんどの取引作業においてDLLに悩まされることはないでしょう。

MQL5の最終的なレジスタの最適化はまだ有効ではありません -実行速度は まだ真剣に増加します。
 

Renatさん、記事にしていただきありがとうございます。何度も必要になる方も多いと思います。dllに関連して横から質問です。(端末249、編集部248)。

1つの関数しかないlibra demo.dllがあります。

_DLLAPI void __stdcall demo(char *stream, char *buf){ buf=stream;}

mqlスクリプトdemo.mq5があります。

#property copyright "2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

#import "demo.dll"
void demo(string s1, string &s2);
#import

void OnStart(){
   string a="TEST"; string b;
   demo(a,b);
   Print(b);    
}

コンパイラはエラーや警告を表示しない。

ターミナルで実行すると、次のようになります。

ビジュアルデバッグで確認したところ、demo.dllの関数自体の最初の文字が文字列ではないこともわかりました。

という質問があります。

何が問題なのか?MQLからDLLに文字列を人力で渡すには?

 
charの 代わりにwchar_tを 使用 する