記事"アンマネージドのエクスポートを使用した MQL5へのC#コードのエクスポーズ"についてのディスカッション - ページ 4

 
MetaDriver:

私は1ヶ月前から、コミュニティによって埋められるmql5のwikiチュートリアルを作るべきだと恥ずかしながら提案してきた。 そうすればメガチュートリアルの問題を解決できるだろう。著者は、特に訪問された記事に対してクレジットで報酬を得ることもできる。

Wikiエンジンは無料で利用できる。

// Metaquotesがやらないなら、誰かが外部サイトでやればいい。 私自身は、それを考えている。

外部サイトの場合、問題があります - 私たちの資料には著作権があります。そして、外部のウィキを作成する場合、テキストのほぼ100%が私たちの資料のコピーペーストになります。

公開ウィキはユートピアだと主張することもできる。公開ウィキのアイデアは、長い間、実際には埋もれていました。私たちがコミュニティやドキュメンテーションの開発にどれだけの労力を費やしているかを見てください。多くのお金と日々の仕事だ。

この問題の解決策は、各ユーザーの端末に強制的に配信される管理されたコンテンツ作成の分野にある。これにより、大量のファムファム化の効率は、無視できる0.00x%から、非常に現実的な3-5%に向上する。

私たちは日々、MQL5教材のボリュームと接続性を高めています。ドキュメンテーション・プロジェクト(MQL5言語、ヘルプ、多言語)は、私たちの仕事の中で非常に大きな割合を占めています。

 
Renat:

外部サイトには問題があります。私たちの資料には著作権があります。そして、外部のウィキを作成する場合、ほぼ100%のテキストが私たちの資料からコピーペーストされることになります。

公開ウィキはユートピアだと主張することができる。公開ウィキのアイデアは、長い間、実際には埋もれていました。私たちがコミュニティやドキュメントの開発にどれだけの労力を費やしているかを見てください。多くのお金と日々の仕事だ。

この問題の解決策は、各ユーザーの端末に強制的に配信される管理されたコンテンツ作成の分野にある。これにより、大量のファムファム化の効率は、無視できる0.00x%から、非常に現実的な3-5%に向上する。

私たちは日々、MQL5教材のボリュームと接続性を高めています。ドキュメンテーションプロジェクト(MQL5言語、ヘルプ、多言語)は、私たちの仕事の中で非常に大きな割合を占めています。

チュートリアルの下でコンテストを復活させたらどうでしょう。結局のところ、初心者は教科書を求めている。

多段階のコンテストを作り、参加者が登録し、教科書の企画を提出し、50%が脱落し、残りは20ドルずつ支払われ、第2段階に進む、など。

マラソンの終わりまで、数少ないが最高の作品にたどり着く。半年で創作するという現実的な条件を設定し、ステージに分ければ、すべてがうまくいくだろう。

 

一般的なC++と.NETの相互運用に関する非常に興味深く、有益な記事だ。

最も簡単な実装方法は、「2.4.C++/cliで.NET APIを手間なく使えるので、グルーコードは "gcroot "を保持する小さくて簡単なクラスだけです。

このアプローチは、http://www.nquotes.net(C#でMQLプログラミングを可能にするライブラリ)の実装の根拠として選ばれた。

最初のバージョンはMQL4しかサポートしていないが、将来のバージョンでは間違いなくMQL5に移植されるだろう。

NQuotes : MetaTrader (MT4) and C#/.NET bridge
  • www.nquotes.net
Debugging in Visual Studio IDE is possible. You can inspect values, place breakpoints and inspect execution step by step. Have a nicer experience than "Print" debugging in pure MQL. Compatible API NQuotes has an API that is compatible with MQL. It is quite easy to get started for MQL4 developers, while others can use the official...
 

素晴らしい記事だ。しかし

Visual Studioに ちょっとしたバグがあります。テンプレートを使って新しいプロジェクトを作成し、それをビルドすると、VSは何の問題もありません。その後、新しいプロジェクト(ビルドされたDLLを含む)をディスクのソリューションフォルダに保存することができます。DLLは問題なく動作します。しかし、VSで保存したプロジェクトに戻ると、ファイルはあるにもかかわらず、プロジェクト「RGiescke.DllExport.targets」が見つからない、またはディスク上にないと文句を言われます。

プロジェクトファイルに問題があるのだろう。

 

とても良いチュートリアルだ。

ありがとう。

削除済み  

Investeoさん、こんにちは、

RGieseckeのテンプレートを使おうとして、いくつかの問題に直面したようです。

DLLを作成してビルドする際、DLL Export Viewerを使用してエクスポートされた関数の名前をチェックし、GetProcAddress経由で関数を検索して呼び出せるようにしています。残念ながら、DLL自体はLoadLibrary関数内で問題なくロードされますが、GetProcAddressはエラー127- Function not foundを返します。同時に、DLL Export Viewerは、私の関数のいずれもエクスポートされていないことを示しています。

私のコードに何か問題があるのでしょうか?

using RGiesecke.DllExport;
using System.Runtime.InteropServices;

namespace ClassLibrary1
{
    public class Class1
    {
        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);

        [DllExport("Demo", CallingConvention = CallingConvention.StdCall)]
        public static void Demo()
        {
            MessageBox(new IntPtr(0), "Demo", "Demo", 0);
        } 
    }
}

そして、Win 32のコンソール・アプリケーションで、私は次のようにしています:

HMODULE x1 = LoadLibrary(L"ClassLibrary1.dll");

        if (!x1) 
        {
                MessageBox(0, L"ERROR", L"Library", 0);
                return 0;
        }

        FARPROC x2 = GetProcAddress(x1, "Demo");

        DWORD error = GetLastError();

        if (!x2) 
        {
                MessageBox(0, L"ERROR", L"Proc", 0);
                return 0;
        }

ありがとうございます。

 
Renat:

ところで、MetaTrader 5は.NETで書かれたDLLから関数を ネイティブにインポート できるようになりました。

私たちは特別にそのようなサポートを追加し、今では回避策を使用する必要はありません。

.Net関数をインポートする方法に関する情報が見つかりません。どなたか、リンクや簡単な例を教えてください。
 
a.p:
.Net関数を即席で作る方法が見つかりません。どなたか、リンクか簡単な例を教えてください。

エディターナビゲーターの "すべてのファイルタイプを表示 "をオンにして、DLLをマウスでつかみ、プログラムのMQL5 ウィンドウに放り込んでください。

きっとその結果に驚くことでしょう。

Документация по MQL5: Программы MQL5
Документация по MQL5: Программы MQL5
  • www.mql5.com
Программы MQL5 - Документация по MQL5
 
Renat:

エディター・ナビゲーターの "Show all file types "をオンにして、DLLをマウスでつかみ、プログラムのMQL5 ウィンドウに放り込んでください。

おそらくその結果に驚かれることでしょう。

クールだ。

DLLからすべての関数を一度に挿入できたら。

 
Renat:

エディター・ナビゲーターの "Show all file types "をオンにして、DLLをマウスでつかみ、プログラムのMQL5 ウィンドウに放り込んでください。

おそらくその結果に驚くでしょう。

Tried it, MetaEditor crashes

追伸
Win8 Enterprise 64
MetaEditor build 842
.Net libには1つの関数があります:
public static int Add(int value1, int value2)
{
return value1 + value2;
}