int _TRANS2QUIK_CONNECT@16(string lpcstrConnectionParamsString, int& pnExtendedErrorCode[], string lpstrErrorMessage, int dwErrorMessageSize);
В новом компиляторе mt4 можно только так
int _TRANS2QUIK_CONNECT(string lpcstrConnectionParamsString, int& pnExtendedErrorCode[], string lpstrErrorMessage, int dwErrorMessageSize);
В h файле который есть в архиве с dll написано так long TRANS2QUIK_API __stdcall TRANS2QUIK_CONNECT (LPSTR
lpstConnectionParamsString,long* pnExtendedErrorCode, LPSTR lpstrErrorMessage, DWORD dwErrorMessageSize);
文字列を#define str "longlong string"として、あるいは+やstring関数で2つの文字列としてスリップさせてみたことはありますか?
結局、Commentも文字列の長さには限界がありますが、変数は数行でモニターに収まらないほど突っ込めます。
ありがとうございます。確かに短縮形は機能します。コンパイラは理解しますが、@でデコードされた関数(そう呼ばれるものだと思います)を受け入れません。そして、古いコンパイラはそのような関数を受け入れるが、それを文字通りに受け取るインポート置換を追加することはない。dllのドキュメントにあるように関数をインポートすると、例えば"_TRANS2QUIK_CONNECT@16 " の代わりに "TRANS2QUIK_CONNECT "とすると、2 (TRANS2QUIK_QUIK_TERMINAL_NOT_FOUND) と返されます。その違いがわからない。
ありがとうございます、リダクションはうまくいきます、コンパイラは理解しますが、@でデコードされた関数(というのだと思います)を受け付けません。そして、古いコンパイラはそのような関数を受け入れるが、それを文字通りに受け取るインポート置換を追加しない。dllのドキュメントにあるように関数をインポートすると、例えば"_TRANS2QUIK_CONNECT@16 " の代わりに "TRANS2QUIK_CONNECT "とすると、2 (TRANS2QUIK_QUIK_TERMINAL_NOT_FOUND) と返されます。その違いがわからない。
ドキュメントのどこに書いてあるのか分かりませんが、ワイルドカードの前にはスラッシュを付ける必要があります。したがって、アドレスラインは次のようになります: C:\folder</file
そこで、次のように書いてみてください。"_TRANS2QUIK_CONNECT@16"
実は、.dllはあまり得意ではありません。それでダメなら...
@Maxim Kuznetsov WinHexとDependency Walkerでdllを開くとOrdinal, Hint, Function, Entry Pointが生成され、それらを使って(_TRANS2QUIK_CONNECT@16) のように関数名を生成して、古いコンパイラは動作してdll結果を返します。これらの象徴的な名前のことでしょうか?
アレクセイ・ヴィクトロフ 私自身はプログラミングの専門家ではありませんが、私のささやかな知識で、私のアイデアを扱うには十分でした。Shielding \ is not work.
Pythonで自動プロキシDL生成ツールを発見 https://github.com/mavenlin/Dll_Wrapper_Gen .ビルドしたDLLは基本的に関数名だけを変更して動作すると思っていました。 変更せずにビルドしようとすると、コンパイラは関数名の@を悪者扱いします。 生成されたcppの一部です。
生成されたdefファイルの欠片
TRANS2QUIK_CONNECT@16 _wrapper は、プロキシDLLから見えるようになる関数名 と理解しています。 だから、CONNECTに 切り替えた んです。dllはビルドされますが、ターミナルにTRANS2QUIK_TERMINAL_NOT_FOUNDと 表示されます。私の脳には合わないのでしょう。取引システムを手動で確認し、そこにdllを注文する必要があります。
@Maxim Kuznetsov WinHexとDependency Walkerでdllを開くとOrdinal, Hint, Function, Entry Pointが生成され、それらを使って(_TRANS2QUIK_CONNECT@16) のように関数名を生成して、古いコンパイラは動作してdll結果を返します。これらの象徴的な名前のことでしょうか?
アレクセイ・ヴィクトロフ 私自身はプログラミングの専門家ではありませんが、私のささやかな知識で、私のアイデアを扱うには十分でした。Shielding \ is not work.
Pythonで自動プロキシDL生成ツールを発見 https://github.com/mavenlin/Dll_Wrapper_Gen .アセンブルしたDLLの関数名だけを変更すれば、本質的にうまくいくと思った。ビジュアルスタジオ用のプロジェクトを構築しました。変更なしでビルドしようとしたところ、コンパイラが関数名の@を悪者にして、cppの断片が生成されました。
生成されたdefファイルの断片。
TRANS2QUIK_CONNECT@16 _wrapper は、プロキシDLLから見える関数の名前 だと理解しています。 だから、CONNECTに 切り替えた んです。dllはビルドされますが、ターミナルにTRANS2QUIK_TERMINAL_NOT_FOUNDと 表示されます。私の脳には合わないのでしょう。取引システムを手動で確認し、そこにdllを注文する必要があります。
ターミナルやDLLのビット深度については一言も触れていませんね。そして、これは重要なことです。
Koldun Zloy Trans2QuikAPI_1.2 は mt4 と quik 7 で 32 bit、Trans2QuikAPI_1.3_x64 は mt5 と quik 8 で 64 bit のみみたいですね。Quik自体で外部トランザクションを有効にしています。インポートする機能が間違っているのではと思いました。自分で書いたんですよ。
等価なデータ型の種類。正しくなければ、昔のコンパイラーでは動かなかったと思います。
ある瞬間にテストのスピードを落とす必要があります。手作業では、そのような瞬間をすべて捉えることは難しいのですが......。
こんにちは!MQL5で背景とボタンで構成されるパネルを作成しました。パネルをドラッグすると、背景だけが動いてボタンはそのままで、次のティックで初めて背景の後ろに移動して目的の場所に表示されます。ボタンと背景を同時に動かすにはどうしたらよいか、アドバイスをお願いします。ありがとうございました。
は、テスターの話なのか、オンラインの話なのか?
オンラインの場合 - コードを見ると、どこかで移動イベントが正常にルーティングされていないことがあります。サイト上の方法によってパネルだけ5種類のライブラリ、あなたは何を意味するのでしょうか?
そしてテスターでは......方法はないようで、なぜか。