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

 
IgorM:

 !! горячо поддерживаю! :) 

не знаю как это делается, но вот пример вики вебманей  http://wiki.webmoney.ru/

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

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

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

 
MetaDriver:

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

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

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

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

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

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

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

 
Renat:

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

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

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

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

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

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

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

 

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;
}
 
На сколько я понял, шаблон RGiesecke UnmanagedExportLibrary, использует для парсинга IL файлов в некоторых местах опору на комментарии, типа // Code. Русскоязычные Windows-ы туда вставляют русские комментарии типа // Размер, и потому его шаблон не работает. В DLL-ке просто нету функций и потому вылетает ошибка 127. А жаль, ради только этого шаблона менять язык интерфейса Windows не хочется, хотя он работает довольно хорошо и вроде корректно, по крайней мере DLL-ки хоть выгружаются. Microsoft тоже веники, из C++ в C# можно легко передавать данные, а вот наоборот большая проблемма.  
 
ANG3110:
На сколько я понял, шаблон RGiesecke UnmanagedExportLibrary...  

 

Это сообщение оставлено более полугода назад. Что-нибудь изменилось с тех пор???

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций