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

 
avoitenko:

DLL関数宣言

DLL関数の呼び出し

そのとおりです。まさにその通りです。ありがとうございました。
 

前回の例では、DLLにも変更を加えていますね?

そういうことなんです。

bool ExcelSetTextCell(int X,int Y, uchar& Value[]);
 

差し支えなければ、ヒントも教えていただけませんか。dllがあり、そこにテキスト値が渡され、出力はstring型の 数値である。

例えばこんな感じ。

#import "n1.dll"
string fData (string a1);
#import

....

string znak = fData ("a");

// При значении "a" переменная znak будет равна например "172371", далее я значение znak конвертирую в int
// Так всё было в МТ4.

知識不足でDLLを直せない。dllに渡すための正しいコードの作り方と、正しく受け取る方法をアドバイスして ください。私のDLLはMT5では動作しないような気がしています。

よろしくお願いします。

Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5
 
Killa:

差し支えなければ、ヒントも教えていただけませんか。dllがあり、そこにテキスト値が渡され、出力はstring型の 数値である。

知識不足でDLLを修正できない。dllに提出するためのコードを正しく書く方法、正しく取得する方法をアドバイスしてください。なぜなら、私のdllは今MT5で動かないからです。

よろしくお願いします。

DLLから返す文字列の動作を再確認したところ、x64でエラーが発生しました(最適化後に発生)。次のビルドで修正されます。

x64で作業されている方は、ビルドのリリースをお待ちください。

ただひとつ付け加えるとすれば、MQL5はUnicodeの文字列で動作することを覚えておいてください。

 
簡単に言うと、DLLを書き換えて...ということです。
 
dllの力を感じたい、よく言われる。問題は、どこから手をつければいいのか、ということです。何をダウンロードすればいいか、何を読めばいいか、どのフォーラムに行けばいいか、5~6点お願いします。この人生、最初のペンデルに大きく左右されます。
 
Renat:

掲載記事MQL5のDLLを10分で書いてデータ交換する方法とは?:

著者:Renat Fatkhullin

記事にしていただきありがとうございます。すでに使っています。

チップは非常に優秀です。しかし!?VS2010でDLLのパスを正しく設定する方法を知るのに10分かかりました。

こんな感じになりました。

C:\Users\пп\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries

MetaEditorからパスをコピーすることをお勧めします。

または、環境変数に自分の好きなパスを指定する(確認はしていません)。

そしてもうひとつ、マルチスレッドにどう対応するか。

 

記事にしていただきありがとうございます。全文を繰り返しましたが、実装時に遭遇したことについて一言。これらの一見小さなことに、私はほとんど気が進まなかったのです。明確にしたかったこと(VS2010 + MT5 (32 bit) build 756 + Win 7 Maximum x64を使用)。

  1. Windowsの標準ライブラリから 作成されたDLLが何らかの理由でx86ライブラリを読み込むという暗黙の依存関係が原因だと理解していますが、これはMQL5の問題ではありませんが、それでも言っておく価値があります。この状況を打破するために、私はMT5 32bitをインストールしました。それはコマンドラインの "Installer folder "で行います。x86のDLLを使用することになります。ですから、少なくとも最初のうちは、x86のみを使用することをお勧めします。
  2. MT5はどうやってもプラグインDLLが見つかりませんでした。ターミナルライブラリーフォルダにDLLを置くと書いてありますが、ターミナルからはまだ見えません。解決策は以下の通りです。システム変数で場所が指定されていれば、DLLがどこに格納されるかは問題ではありません。どうすれば、Googleの役に立つのか。

それ以外は非常に良い記事です...リスペクト!

 

64bitのMT5では、この例は動作しません。ターミナルでは、32bitのDLLであることが報告され、接続されない。しかし、Win32の下では(この例や他のすべての例のように-Delphiのように)-すべてのDLLは32ビットです。前回の記事と同様、64bit版のターミナルをアンインストールして32bit版をインストールする必要があります。また、64bit版が強制的にインストールされてしまうので、その方法を教えて欲しい。MT5 64bitは死んだターミナルであることが判明、なぜリリースされたのか分からない。開発者の皆様、もし可能であれば、32bitのDLLをМТ5の64bitに接続できるようにしてください。

これは技術的に不可能または困難である場合は、このバージョンは32ビットDLLとユーザーが苦しむと何が間違っているのか理解できない動作しませんという落とし穴を書き込みます。そして、Librariesフォルダが端末自体のディレクトリにないことを公然と書き込み、どこにあるか知っていて、経験なしで見つけることはできませんが、試してみることもありません。By the way, in this secret place there are all indicators and experts, so installing MT5 you can forget about them - if you don't know that all this is in hidden folder C:\Users´AppData╱Roaming......あるいは、ユーザーはよくできたプログラムを インストールしていると思っているが、それはデマである。

 

技術レベルを向上させるべき。

64ビットのプログラムには64ビットのライブラリが必要で、32ビットのライブラリを合理的に接続することは不可能です。32ビット版をインストールするには、インストーラーを/32スイッチ付きで実行する必要があります。

記事を書き直し、MetaEditorやMT4、MT5プラットフォームでとっくに実装されているクールな機能を追加する予定です。新機能を知らない開発者も多い。