Обсуждение статьи "Как открыть мир C# из MQL5 путем экспорта неуправляемого кода" - страница 4

 
MetaDriver:

Вапче уже месяц стесняюсь предложить - сделать вики-учебник по mql5, наполняемый сообществом.  Это бы решило проблемы с мега-учебником. За особо-посещаемые статьи можно авторов даже кредитами поощрять.

Вики-движок бесплатен и доступен.

// Если этого не сделают МетаКвоты, может сделать кто-то другой на стороннем ресурсе.  Я, например, подумываю. 

Для внешних сайтов есть проблема - у нас копирайт на наши материалы. А при создании стороннего вики практически 100% текста будет копипастом наших материалов.

Можно утверждать, что пополняемые обществом вики - это утопия. Идея общественных вики давно похоронена на практике. Посмотрите сколько сил мы прикладываем на развитие своих сообществ и документацию. Это очень много денег и ежедневной работы.

Решение вопроса лежит в области управляемого создания контента с обязательной доставкой до терминала каждого пользователя. Это позволяет увеличить эффективность массового ознакомления с ничтожных 0.00x% до вполне реалистичных 3-5%.

Объем и связанность материалов по MQL5 мы ежедневно увеличиваем. Проект документации (язык MQL5, справки, мультиязычность) занимает очень большую долю в нашей работе.

 
Renat:

Для внешних сайтов есть проблема - у нас копирайт на наши материалы. А при создании стороннего вики практически 100% текста будет копипастом наших материалов.

Можно утверждать, что пополняемые обществом вики - это утопия. Идея общественных вики давно похоронена на практике. Посмотрите сколько сил мы прикладываем на развитие своих сообществ и документацию. Это очень много денег и ежедневной работы.

Решение вопроса лежит в области управляемого создания контента с обязательной доставкой до терминала каждого пользователя. Это позволяет увеличить эффективность массового ознакомления с ничтожных 0.00x% до вполне реалистичных 3-5%.

Объем и связанность материалов по MQL5 мы ежедневно увеличиваем. Проект документации (язык MQL5, справки, мультиязычность) занимает очень большую долю в нашей работе.

А что если под учебник возродить конкурсы. Ведь новичёк так и просит учебник.

Сделать многоэтапный конкурс, зарегились участники, представили план учебника, 50% отсеяли, остальным по $20, пошли на второй этап итд.

До конца марафона дойдут единицы но с лучшими работами. Задать реальные сроки создания с пол года, разбить на этапы и всё получится.

 

Это очень интересная и полезная статья об общем взаимодействии C++ и .NET.

Наиболее простой стратегией для реализации является "2.4. Класс-обертка C++/Cli", потому что вы можете использовать .NET API в C++/cli без каких-либо затруднений, так что единственным клеящимся кодом является небольшой и простой класс, который содержит "gcroot".

Этот подход был выбран в качестве основы для реализации http://www.nquotes.net - библиотеки, позволяющей программировать на MQL в C#.

Хотя первая версия поддерживает только 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) на диск, в папку solution. Длл работает нормально. Однако, если я возвращаюсь в VS в сохраненный проект, он жалуется, что проект "RGiescke.DllExport.targets" не найден или не находится на диске, хотя файл там есть.

Я полагаю, что это проблема с файлом проекта......

 

Очень хороший учебник, мне это нравится.

Большое спасибо.

 

Hi Investeo,

Thanks for this article it was very useful, though seems that i faced to some issue trying to use template from RGiesecke.

When i created and built a DLL i use DLL Export Viewer to check names of the exported functions to be able to find and call them via GetProcAddress. Unfortunately DLL itself is loading fine within LoadLibrary function but GetProcAddress returns error 127 - Function not found. At the same time DLL Export Viewer shows that neither of my functions were exported ...

Could you please suggest what can be wrong with my code?

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);
        } 
    }
}

And then in Win 32 Console application i am doing the following :

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;
        }

Thanks, Art

 
Renat:

Кстати, уже несколько билдов как MetaTrader 5 может нативно импортировать функции из DLL, написанных на .NET

Мы специально добавили такую поддержку и теперь не нужно использовать обходные врапперы.

Не нашел информации как сделать импрот .Net функции. Кто может, поделитесь линком или простым примером.
 
a.p:
Не нашел информации как сделать импрот .Net функции. Кто может, поделитесь линком или простым примером.

Включите в навигаторе редактора "Показ всех типов файлов", схватите свою DLL мышкой и бросьте в окно MQL5 программы.

Скорее всего удивитесь результату.

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

Включите в навигаторе редактора "Показ всех типов файлов", схватите свою DLL мышкой и бросьте в окно MQL5 программы.

Скорее всего удивитесь результату.

прикольно. 

Если бы еще сразу все функции из ДЛЛ вставлял.  

 
Renat:

Включите в навигаторе редактора "Показ всех типов файлов", схватите свою DLL мышкой и бросьте в окно MQL5 программы.

Скорее всего удивитесь результату.

Попробовал, MetaEditor вылетает

P.S.
Win8 Enterprise 64
MetaEditor build 842
.Net либа имеет одну функцию:
public static int Add(int value1, int value2)
{
    return value1 + value2;
}