기고글 토론 "관리되지 않는 내보내기를 사용하여 MQL5에 C# 코드 노출" - 페이지 4

 
MetaDriver:

저는 한 달 전부터 수줍게 커뮤니티가 참여하는 mql5 위키 튜토리얼을 만들자고 제안해 왔습니다. 이렇게 하면 메가 튜토리얼의 문제점을 해결할 수 있을 것입니다. 작성자는 특히 많이 방문한 문서에 대해 크레딧을 받을 수도 있습니다.

위키 엔진은 무료이며 사용할 수 있습니다.

// 메타쿼츠가 안 된다면 다른 사람이 외부 사이트에서 할 수도 있습니다. 저도 고려 중입니다.

외부 사이트의 경우 자료의 저작권이 우리에게 있다는 문제가 있습니다. 그리고 외부 위키를 만들면 거의 100%의 텍스트가 우리 자료의 복사본이 될 것입니다.

퍼블릭 위키가 유토피아라고 주장할 수도 있습니다. 공개 위키에 대한 아이디어는 오랫동안 현실에 묻혀 있었습니다. 우리가 커뮤니티와 문서를 개발하는 데 얼마나 많은 노력을 기울이는지 보세요. 많은 돈과 매일의 노력이 필요하죠.

이 문제에 대한 해결책은 각 사용자의 단말기로 의무적으로 전달되는 관리형 콘텐츠 생성 영역에 있습니다. 이를 통해 미미한 0.00%에서 매우 현실적인 3~5%까지 대량 친숙화 효율을 높일 수 있습니다.

우리는 매일 MQL5 자료의 양과 연결성을 늘리고 있습니다. 문서화 프로젝트(MQL5 언어, 도움말, 다국어)는 저희 업무에서 매우 큰 비중을 차지합니다.

 
Renat:

외부 사이트의 경우 문제가 있습니다. 저희는 자료에 대한 저작권을 가지고 있습니다. 그리고 외부 위키를 만들 때 거의 100%의 텍스트가 자료에서 복사되어 붙여넣기됩니다.

퍼블릭 위키는 유토피아라고 주장할 수 있습니다. 공개 위키에 대한 아이디어는 오랫동안 실제로 묻혀 있었습니다. 우리가 커뮤니티와 문서를 개발하는 데 얼마나 많은 노력을 기울였는지 보세요. 많은 돈과 매일의 노력이 필요하죠.

이 문제에 대한 해결책은 각 사용자의 단말기로 의무적으로 전달되는 관리형 콘텐츠 생성 영역에 있습니다. 이를 통해 대량 숙지 효율을 0.00%에서 매우 현실적인 3~5%까지 높일 수 있습니다.

우리는 매일 MQL5 자료의 양과 연결성을 늘리고 있습니다. 문서화 프로젝트(MQL5 언어, 도움말, 다국어)는 우리 업무에서 매우 큰 비중을 차지합니다.

튜토리얼에서 콘테스트를 부활시키면 어떨까요? 결국 신규 사용자들은 교과서를 요구하고 있습니다.

다단계 콘테스트를 만들고, 참가자가 등록하고, 교과서 계획을 제출하고, 50%는 탈락하고, 나머지는 각각 20달러를 받고, 2단계로 이동하는 등의 방식으로 진행하면 됩니다.

마라톤이 끝날 때까지 소수의 최고의 작품이 끝날 때까지 도달 할 것입니다. 반년으로 실제 창작 조건을 설정하고 단계별로 나누면 모든 것이 잘 될 것입니다.

 

일반적인 C++ 및 .NET 상호 운용에 관한 매우 흥미롭고 유용한 기사입니다.

가장 간단하게 구현할 수 있는 전략은 "2.4. C++/Cli 래퍼 클래스"를 사용하는 것인데, 번거로움 없이 C++/cli에서 .NET API를 사용할 수 있으므로 유일한 글루 코드가 "gcroot"를 보유하는 작고 간단한 클래스뿐이기 때문입니다.

이 접근 방식은 C#에서 MQL 프로그래밍을 가능하게 하는 라이브러리인 http://www.nquotes.net 의 구현을 위한 근거로 선택되었습니다.

첫 번째 버전은 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...
 

아주 유용한 기사입니다. 하지만...

비주얼 스튜디오에 약간의 버그가 있습니다. 템플릿을 사용하여 새 프로젝트를 만들고 빌드하면 VS에는 문제가 없습니다. 그런 다음 새 프로젝트 (빌드 된 dll 포함)를 솔루션 폴더에 디스크에 저장할 수 있습니다. dll은 정상적으로 실행됩니다. 그러나 VS에서 저장된 프로젝트로 돌아가면 파일이 있는데도 "RGiescke.DllExport.targets" 프로젝트를 찾을 수 없거나 디스크에 없다고 불평합니다.

프로젝트 파일에 문제가 있는 것 같아요.....

 

아주 좋은 튜토리얼, 나는 이것을 좋아합니다.

큰 감사합니다.

 

안녕하세요 인베스티오,

이 기사는 매우 유용했지만 RGiesecke의 템플릿을 사용하려고 할 때 몇 가지 문제가 발생한 것 같습니다.

DLL을 생성하고 빌드 할 때 DLL 내보내기 뷰어를 사용하여 내 보낸 함수의 이름을 확인하여 GetProcAddress를 통해 찾아서 호출 할 수 있습니다. 안타깝게도 DLL 자체는 LoadLibrary 함수 내에서 정상적으로 로드되지만 GetProcAddress에서 오류 127 - 함수를 찾을 수 없음이 반환됩니다. 동시에 DLL 내보내기 뷰어에 내 함수가 내보내지지 않았 음을 보여줍니다 ...

제 코드에 무엇이 잘못되었는지 제안해 주시겠습니까?

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:

편집기 탐색기에서 "모든 파일 유형 표시"를 켜고 마우스로 DLL을 잡고 프로그램의 MQL5 창에 던져 넣습니다.

아마 결과에 놀라실 겁니다.

멋지네요.

DLL의 모든 함수를 한 번에 삽입할 수 있다면 좋겠네요.

 
Renat:

편집기 탐색기에서 "모든 파일 유형 표시"를 켜고 마우스로 DLL을 잡고 프로그램의 MQL5 창에 던져 넣습니다.

아마 결과에 놀라실 것입니다.

시도해보니 MetaEditor가 충돌합니다

추신:
Win8 Enterprise 64
MetaEditor 빌드 842
.Net lib에는 하나의 함수가 있습니다:
public static int Add(int value1, int value2)
{
반환 값1 + 값2;
}