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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
jaffer wilson
2792
jaffer wilson  

Я пытаюсь эту статью: 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
57696
Dmitry Fedoseev  

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

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

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

jaffer wilson
2792
jaffer wilson  
Dmitry Fedoseev :

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

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

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

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

jaffer wilson
2792
jaffer wilson  
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
57696
Dmitry Fedoseev  
Что-то не работает это в МТ4. В МТ5 запросто.
jaffer wilson
2792
jaffer wilson  
Dmitry Fedoseev :
Something does not work this in MT4. In MT5, easily.

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

Dmitry Fedoseev
57696
Dmitry Fedoseev  
jaffer wilson:

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

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

jaffer wilson
2792
jaffer wilson  
у кого-нибудь есть решение для этого?
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий