Кто-нибудь может сказать мне, как изменить функцию C # для работы с MQL4 с использованием DLL?

 

Вот оригинальная функция:

        public static void GetEvent(int event_n, ref string el_name,ref int id,  ref long lparam, ref double dparam, ref string sparam)
        {         
                GuiEvent e = m_global_events[event_n];
                el_name = e.el_name;
                id = (int)e.id;
                lparam = e.lparam;
                dparam = e.dparam;
                sparam = e.sparam;
            
        }

Вот что я попробовал:

public static void GetEvent([MarshalAs(UnmanagedType.I4)] int event_n, [MarshalAs(UnmanagedType.LPTStr)] ref string  el_name, [MarshalAs(UnmanagedType.I4)] ref int id, [MarshalAs(UnmanagedType.I8)] ref long lparam, [MarshalAs(UnmanagedType.R8)] ref double dparam, [MarshalAs(UnmanagedType.LPTStr)] ref string sparam)
        {
            GuiEvent e = m_global_events[event_n];
            el_name = e.el_name;
            Console.WriteLine(e.el_name);
            id = (int)e.id;
            lparam = e.lparam;
            dparam = e.dparam;
            sparam = e.sparam;
        }

Я получаю ошибку:

 



Access violation  

Пожалуйста, дайте мне знать, что я могу сделать, чтобы он работал с MQL4.

Доступ dll, как это:

#import   "my.dll" 
void GetEvent ( int index, string element_name, int elemnet_id, long element_lparam, double element_dparam, string element_sparam);
#import
 

мне вот это помогло в свое время

https://www.mql5.com/ru/articles/2895

https://www.mql5.com/ru/articles/249

Интеграция эксперта на MQL и базы данных (SQL Server, .NET и C#)
Интеграция эксперта на MQL и базы данных (SQL Server, .NET и C#)
  • www.mql5.com
Теперь перейдём к функциям. Для функций, которые будут экспортироваться для использования в MQL5, есть ограничения. Функции, как уже говорилось, должны быть статическими. Нельзя использовать шаблонные классы коллекций (пространство имён System.Collections.Generic). Компилироваться с ними всё будет хорошо, но на этапе исполнения могут...