Создание DLL в Visual C++

 

Здравствуйте!

Пользовался индикатором BPNN Predictor.

Все было нормально пока не полетел мой старенький 32-bit  комп.

Собрал 64-bit  и ничего не работает -- только запускаю индикатор вырубается терминал.

Подозреваю что дело в DLL.

Кто нибудь может детально описать как создать DLL'ку в Visual C++ 2017?

 
fornety:

Здравствуйте!

Пользовался индикатором BPNN Predictor.

Все было нормально пока не полетел мой старенький 32-bit  комп.

Собрал 64-bit  и ничего не работает -- только запускаю индикатор вырубается терминал.

Подозреваю что дело в DLL.

Кто нибудь может детально описать как создать DLL'ку в Visual C++ 2017?

https://www.metatrader5.com/ru/releasenotes/terminal/1898

MQL5

Добавлена нативная поддержка .NET библиотек с "умным" импортом функций. Теперь библиотеки .NET можно использовать без написания специальных оберток — MetaEditor берет это на себя.

Для работы с функциями .NET библиотеки достаточно импортировать саму DLL без указания конкретных функций. MetaEditor автоматически импортирует все функции, с которыми возможна работа:
  • Простые структуры (POD, plain old data) — структуры, которые содержат только простые типы данных.
  • Публичные статические функции, в параметрах которых используются только простые типы и структуры POD или их массивы

Для вызова функций из библиотеки просто импортируйте ее:
#import "TestLib.dll"

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   int x=41;
   TestClass::Inc(x);
   Print(x);
  }
C# код функции Inc класса TestClass выглядит следующим образом:
public class TestClass
{
   public static void Inc(ref int x)
   {
    x++;
   }
}
В результате выполнения скрипт вернет значение 42.
MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
  • 2018.10.26
  • MetaQuotes Software Corp.
  • www.metatrader5.com
Теперь вы можете выносить графики финансовых инструментов за пределы окна торгового терминала. Это удобно при работе с несколькими мониторами. Например, на одном можно расположить основное окно платформы и следить за состоянием счета, а на другом — графики для оценки ситуации на рынке. Чтобы отделить график от терминала, отключите опцию...
 
fornety:

Здравствуйте!

Пользовался индикатором BPNN Predictor.

Все было нормально пока не полетел мой старенький 32-bit  комп.

Собрал 64-bit  и ничего не работает -- только запускаю индикатор вырубается терминал.

Подозреваю что дело в DLL.

Кто нибудь может детально описать как создать DLL'ку в Visual C++ 2017?

Что в логах? Какая конкретно версия BPNN (приведите исходники)? Там изначально была ошибка, надо было применять фикс.

 
fornety:

Здравствуйте!

Пользовался индикатором BPNN Predictor.

Все было нормально пока не полетел мой старенький 32-bit  комп.

Собрал 64-bit  и ничего не работает -- только запускаю индикатор вырубается терминал.

Подозреваю что дело в DLL.

Кто нибудь может детально описать как создать DLL'ку в Visual C++ 2017?

Для начала Вам необходимо знать разницу между 32-битными и 64-битными программами.

Самая главная разница - в размере указателей

 
Stanislav Korotky:

Что в логах? Какая конкретно версия BPNN (приведите исходники)? Там изначально была ошибка, надо было применять фикс.Здесь 

Здесь файлы

А у Вас есть фиксед версия?

Файлы:
BPNN.zip  6 kb
 
fornety:

Здесь файлы

А у Вас есть фиксед версия?

Да, это с багом. Вот фикс.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Слегка исправленная версия BPNN.dll

Stanislav Korotky, 2010.10.06 10:08

Исправления простые - все упомянуты в комментах кодебазы, но в принципе не проблема прикрепить - можете сами сравнить.

Сборка делалась Borland-ом (без оптимизаций) - кому не нравится, может пересобрать другими средствами ;-). Размер не всегда определяет качество, но в данном случае качество меня устраивает.

Если будут все равно проблемы, надо будет разбираться. А вообще-то dll не нужна. Данный исходник в MQL легко переводится.
 
Stanislav Korotky:

Да, это с багом. Вот фикс.

Если будут все равно проблемы, надо будет разбираться. А вообще-то dll не нужна. Данный исходник в MQL легко переводится.

Я думал это сделать.  А Вы это сделали?

У Вас есть сама ДЛЛ-ка, а то я забыл как это делать?

Борландом пользовался еще 23 года назад, а в Студии делал ДЛЛ-ки лет 5 назад.

 
fornety:

Я думал это сделать.  А Вы это сделали?

У Вас есть сама ДЛЛ-ка, а то я забыл как это делать?

Dll-ка там где-то приложена. Но она давно собралась, однозначно не под 64, тогда Борланд таких не делал. ;-)

Сделал что? Перевод на MQL? Да у меня лежит где-то 3 варианта (игрался с разными способами реализации многомерных массивов), но все они в таком непотребном виде, что прямо так выкладывать нельзя. Если будет время, причешу и выложу в КБ. Вообще были сомнения, что это еще нужно. Народ уже во всю глубокими сетями балуется (статьи и тут вроде были), тензорным исчислением... Так что простой MLP - кому нужен? Кстати, для MLP BP и прочих структур сетей на этом сайте много других разных реализаций, так что не обязательно BPNN брать.

 
Stanislav Korotky:

Dll-ка там где-то приложена. Но она давно собралась, однозначно не под 64, тогда Борланд таких не делал. ;-)

Сделал что? Перевод на MQL? Да у меня лежит где-то 3 варианта (игрался с разными способами реализации многомерных массивов), но все они в таком непотребном виде, что прямо так выкладывать нельзя. Если будет время, причешу и выложу в КБ.

Ну чтож, приятно было познакомиться!

Я тоже попробую сделать, если что получится , дам знать.

 
fornety:

Ну чтож, приятно было познакомиться!

Я тоже попробую сделать, если что получится , дам знать.

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

 

Опубликовал.

Code Base

BPNN MQL Predictor Demo with library

Stanislav Korotky, 2019.12.18 16:24

This is a demo indicator with BPNN neural network library ported from C++ to MQL.
Причина обращения: