記事"Linux 上での MetaTrader 5"についてのディスカッション - ページ 24 1...171819202122232425262728293031...33 新しいコメント WStranger 2023.07.28 14:45 #231 皆さんこんにちは! 私はメタトレーダー5ビルド3815をwine-8.0.1上で64ビットUbuntu 20.04.6 LTSで動かしています。 私のExpert Advisorでは、インポートしたC# DLL(.NET Framework 4.8)の関数を使用しています。エクスポートした関数が何をするかは関係なく、Expertは最初に起動したときはうまく動作しますが、2回目に起動したときはメタトレーダー5がクラッシュします。メタトレーダー 5 がクラッシュする前に、デバッガーが Expert のブレークポイントをヒットすることはありません。 Expert の非初期化後に DLL に関連するリソースが解放されていないようです。 これを修正する方法はありますか? C# DLL コード: namespace Test { public static class TestStatic { public static string TestFunc() { return "test return value"; } } } Expert Advisor コード: #import "Test.dll" #import int OnInit() { // この行が使用された場合、2回目の実行でクラッシュする Print("DLL function result: ", TestStatic::TestFunc()); // この行が使用されていれば、2回目の実行でクラッシュすることはない //Print("no DLL functions used"); return(INIT_SUCCEEDED); } void OnDeinit(const int reason){} void OnTick() {} Dominik Egert 2023.07.28 19:19 #232 WStranger #:皆さん、こんにちは! 私はメタトレーダー5 ビルド3815を64ビットのUbuntu 20.04.6 LTSのwine-8.0.1で動かしています。 私のExpert Advisorでは、インポートしたC# DLL(.NET Framework 4.8)の関数を使用しています。エクスポートした関数が何をするかは関係なく、Expertは最初に起動したときはうまく動作しますが、2回目に起動したときはメタトレーダー5がクラッシュします。Metatrader 5 がクラッシュする前に、デバッガが Expert のブレークポイントをヒットすることはありません。 Expert の非初期化後、DLL に関連するいくつかのリソースが解放されていないようです。 これを修正する方法はありますか? C# DLL コード: Expert Advisor コード: ワインで再起動すれば直ると思いますが...。 WStranger 2023.07.28 19:39 #233 Dominik Christian Egert #:ワインでウインドウズを再起動すればいいんだろうけど...。 試してみたが、解決しなかった。ターミナルを起動してから2回EAを起動するたびに、winebootの後でもクラッシュする。 Dominik Egert 2023.07.28 22:06 #234 WStranger #: 試してみたが、解決しなかった。ターミナルを起動してから2回EAを起動するたびに、wineboot後でもクラッシュする。確かではありませんが、ウィンドウズでも同じ問題があったような...。でも、どうやって解決したのか覚えていません。解決したかどうかも覚えていません。どうやってEAを終了させるのですか? Dominik Egert 2023.07.28 22:12 #235 WStranger #:皆さん、こんにちは! 私はMetatrader 5 build 3815をwine-8.0.1、64-bit Ubuntu 20.04.6 LTSで動かしています。 私のExpert Advisorでは、インポートしたC# DLL(.NET Framework 4.8)の関数を使用しています。エクスポートされた関数が何をするかに関係なく、Expertは最初に起動したときはうまく動作しますが、2回目に起動したときはメタトレーダー5がクラッシュします。Metatrader 5 がクラッシュする前に、デバッガが Expert のブレークポイントをヒットすることはありません。 Expert の非初期化後、DLL に関連するいくつかのリソースが解放されていないようです。 これを修正する方法はありますか? C# DLL コード: Expert Advisor コード: はい、問題はわかっています。あなたのDLLはロードとアンロードのメッセージを適切に処理していません。DLLの適切なロードとアンロードに最低限必要なコードが欠けています。 WStranger 2023.07.29 12:45 #236 Dominik Christian Egert #: EAはどのように終了させるのですか? チャートから手動で削除するか、デバッガで停止させますが、結果はどちらも同じです。 Dominik Christian Egert#: DLLの適切なロードとアンロードのために最低限必要なコードが欠けています。 これを適切に行う方法を説明した仕様書やコードサンプルはありますか?MQL5の仕様ではそうなっていません。また、私の経験からもそうではありません:私は複数のMQL5プロジェクトで.NETライブラリを使用していますが、Windows 8.1/10/11では期待通りに動作しています。 Dominik Egert 2023.07.29 13:05 #237 WStranger #:チャートから手動で削除したり、デバッガで停止させたりしていますが、結果はどちらも同じです。 この方法を説明した仕様書やコードサンプルはありますか?MQL5の仕様ではそうなっていません。また、私の経験からもそうではありません:複数のMQL5プロジェクトで.NETライブラリを使用していますが、Windows 8.1/10/11で期待通りに動作しています。https://www.mql5.com/en/forum/136657編集https:// learn.microsoft.com/en-us/windows/win32/dlls/dllmain Dominik Egert 2023.07.29 13:13 #238 WStranger #:チャートから手動で削除したり、デバッガで停止させたりしていますが、結果はどちらも同じです。 この方法を説明した仕様書やコードサンプルはありますか?MQL5の仕様ではそうなっていません。また、私の経験からもそうではありません:私は複数のMQL5プロジェクトで.NETライブラリを使用していますが、Windows 8.1/10/11では期待通りに動作しています。おそらく、DLLが終了プロセスから切り離されていないことがわかるでしょう。私はmysqlclient.dllでこの問題と格闘していましたが、strategy testerはDLLをきれいに切り離さないことがわかりました。それよりも、ターミナルが実際にDLLをロードしているようで、そこでロードされたままになっています。古いバージョンのクライアントは今日現在動作していないので、確認できません。そのため、当時の問題を再現できる可能性は今のところありません。 WStranger 2023.07.31 13:30 #239 Dominik Christian Egert #:おそらく、DLLが終了プロセスから切り離されていないことがわかるだろう。 私はmysqlclient.dllでこの問題と格闘していたが、strategy testerはDLLをきれいに切り離さないことがわかった。それよりも、ターミナルが実際にDLLをロードしているようで、そこにロードされたままになっている。 古いバージョンのクライアントは今日現在動作していないので、確認できません。そのため、当時の問題を再現できる可能性は今のところありません。 恥ずかしい。メタトレーダー5ターミナルを動かしているWineプレフィックスに.NET Frameworkが正しくインストールされていないことがわかりました。再インストールしたら、DLLの問題は解決しました。 とにかく、ありがとうございました! WineHQ - .NET Framework 4.8 appdb.winehq.org Open Source Software for running Windows applications on other operating systems. Dominik Egert 2023.07.31 17:48 #240 WStranger #: 恥ずかしい。メタトレーダー5ターミナルを走らせているWineプレフィックスに.NET Frameworkが正しくインストールされていないことがわかった。再インストールしたら、DLLの問題は解決しました。 とにかくご苦労様でした! ご報告ありがとうございます。 1...171819202122232425262728293031...33 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
試してみたが、解決しなかった。ターミナルを起動してから2回EAを起動するたびに、wineboot後でもクラッシュする。
Dominik Christian Egert #:
チャートから手動で削除するか、デバッガで停止させますが、結果はどちらも同じです。
Dominik Christian Egert#:
チャートから手動で削除したり、デバッガで停止させたりしていますが、結果はどちらも同じです。
この方法を説明した仕様書やコードサンプルはありますか?MQL5の仕様ではそうなっていません。また、私の経験からもそうではありません:複数のMQL5プロジェクトで.NETライブラリを使用していますが、Windows 8.1/10/11で期待通りに動作しています。チャートから手動で削除したり、デバッガで停止させたりしていますが、結果はどちらも同じです。
この方法を説明した仕様書やコードサンプルはありますか?MQL5の仕様ではそうなっていません。また、私の経験からもそうではありません:私は複数のMQL5プロジェクトで.NETライブラリを使用していますが、Windows 8.1/10/11では期待通りに動作しています。恥ずかしい。メタトレーダー5ターミナルを走らせているWineプレフィックスに.NET Frameworkが正しくインストールされていないことがわかった。再インストールしたら、DLLの問題は解決しました。