Как импортировать функцию класса из DLL в MQL4?

jaffer wilson
3802

Я пытаюсь эту статью: https://www.mql5.com/en/articles/5563

Я думал задавать вопросы @Vasiliy Sokolov . Но я думаю, что он слишком занят, так как он не ответил на вопрос в обсуждении.

Я думаю, я получу помощь здесь.

Вот что я пытаюсь:

//+------------------------------------------------------------------+
//|                                                    testforms.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#import  "MtGuiController.dll"
string assembly = "C:\\Users\\UnKnown\\Desktop\\VC-Forms\\test_forms\\bin\\Debug\\test_forms.exe";
#import
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   EventSetMillisecondTimer(200);
   GuiController::ShowForm(assembly, "Form1");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   GuiController::HideForm(assembly, "Form1");
   EventKillTimer();
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   for(int i = 0; i < GuiController::EventsTotal(); i++)
     {
      int id;
      string el_name;
      long lparam;
      double dparam;
      string sparam;
      GuiController::GetEvent(i, el_name, id, lparam, dparam, sparam);
      if(id == ClickOnElement)
         printf("Click on element " + el_name);
     }
  }
//+------------------------------------------------------------------+

Получаем следующую ошибку:

Пожалуйста, мне нужна помощь с этим, если кто-то может сказать мне, как импортировать функцию класса из DLL, тогда это будет здорово.

Developing graphical interfaces for Expert Advisors and indicators based on .Net Framework and C#
Developing graphical interfaces for Expert Advisors and indicators based on .Net Framework and C#
  • www.mql5.com
Since October 2018, MQL5 supports native integration with Net Framework libraries. Native support means that types, methods and classes placed in the .Net library are now accessible directly from an MQL5 program without prior declaration of the calling functions and their parameters, as well as without the complex typecasting of the two...
Dmitry Fedoseev
63896

1. Импортируемые методы должны быть статическими.

2. Отдельные функции (методы) не надо импортировать. Импортируем просто всю библиотеку: #import "YourLibName.dll"

3. Вызываем методы так, как вызываются статические методы: ClassName::MethodName(); 

jaffer wilson
3802
Dmitry Fedoseev :

1. Импортируемые методы должны быть статическими.

2. Отдельные функции (методы) не надо импортировать. Импортируем просто всю библиотеку: #import "YourLibName.dll"

3. Вызываем методы так, как вызываются статические методы: ClassName::MethodName(); 

Я не понимаю, что вы имеете в виду. Я прочитал документацию и попытался использовать то же самое. Что не так в моем импорте? Методы являются статическими в DLL.

jaffer wilson
3802
Dmitry Fedoseev :

1. Импортируемые методы должны быть статическими.

2. Отдельные функции (методы) не надо импортировать. Импортируем просто всю библиотеку: #import "YourLibName.dll"

3. Вызываем методы так, как вызываются статические методы: ClassName::MethodName(); 

Можете ли вы попробовать использовать это: https://www.mql5.com/en/articles/5563 в MQl4? Будет полезно, если вы сможете запустить его один раз, пожалуйста.

Developing graphical interfaces for Expert Advisors and indicators based on .Net Framework and C#
Developing graphical interfaces for Expert Advisors and indicators based on .Net Framework and C#
  • www.mql5.com
Since October 2018, MQL5 supports native integration with Net Framework libraries. Native support means that types, methods and classes placed in the .Net library are now accessible directly from an MQL5 program without prior declaration of the calling functions and their parameters, as well as without the complex typecasting of the two...
Dmitry Fedoseev
63896
Что-то не работает это в МТ4. В МТ5 запросто.
jaffer wilson
3802
Dmitry Fedoseev :
Something does not work this in MT4. In MT5, easily.

Это я знаю. Поэтому я здесь, чтобы найти решение, я знаю проблему, спасибо. Если у вас есть решение, дайте мне знать. Если вы можете попытаться запустить код статьи на MQL4, то я думаю, что это поможет вам, а не просто угадает ситуацию.

Dmitry Fedoseev
63896
jaffer wilson:

Это я знаю. Поэтому я здесь, чтобы найти решение, я знаю проблему, спасибо. Если у вас есть решение, дайте мне знать. Если вы можете попытаться запустить код статьи на MQL4, то я думаю, что это поможет вам, а не просто угадает ситуацию.

Я запускал, только не тот код, а свой, который работает в МТ5. Думаю, что решения нет, в МТ4 это просто не работает и все. Но кто знает... вдруг есть отгадка и кто-то расскажет.

jaffer wilson
3802
у кого-нибудь есть решение для этого?
Ricardo Rodrigues Dias De Lima
530

Jaffer wilson


изменить это

if (id == ClickOnElement)

за это
if (id == GuiEventType :: ClickOnElement) здесь, в Бразилии, хорошо работает на МТ5 Aqui no Goiáis é baum demais! Salve Salve Galerinha Tudo Baum com vocês? DayTradeShow