Заработай до
50000$
на приглашении друзей
получить StartUp Bonus
от ИнстаФорекс
Вложений не требуется!
Начни торговлю
без вложений и риска
С новым STARTUP бонусом 1000$
Получи бонус
55%
от ИнстаФорекс
на каждое пополнение
Ответить в теме

Показаны сообщения: с 1 по 12 из 12

Тема: Правильная компиляция dll на С# для использования в qml4

 Перейти в классический вид темы
  1. линк#1
    В начале пути
    cherik1 стараюсь положительно себя зарекомендовать Аватар для cherik1
    Регистрация:
    15.07.2020
    Пол:
    Мужчина
    Сообщений:
    12
    Накопленные выплаты (Подробнее):
    0 RUB
    Поставил лайков:
    1
    Поблагодарили 1 раз в
    1 сообщении
    8%
    ПодписатьсяПодписаться
    Подписано 0
    Здравствуйте!
    пытаюсь скомпилировать dll c#
    Взял за основу проект из инета
    Код:
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Runtime.InteropServices;
    using RGiesecke.DllExport;
    
    namespace MqlSqlDemo
    {
        public static class MqlSqlDemo
        {
            private static SqlConnection conn = null;
            private static SqlCommand com = null;
            private static string sMessage = string.Empty;
    
            public const int iResSuccess = 0;
            public const int iResError = 1;
    
            [DllExport("CreateConnection", CallingConvention = CallingConvention.StdCall)]
            public static int CreateConnection(
                [MarshalAs(UnmanagedType.LPWStr)] string sConnStr)
            {
                // Всё прошло хорошо, подключение открыто:
                return iResSuccess;
            }
    ... 
    //дальше какой-то код который при удалении почему то не дает компилировать этот проект но с удалением буду разбираться позже
    Нажмите на изображение для увеличения
Название: 123.png
Просмотров: 28
Размер:	120.2 КБ
ID:	3921677
    На рисунке можно поглядеть настройки и ответ о компиляции
    Дальше я копирую файл в прямо в папку с экспертами (ногами не бейте, я в курсе, что так настоящие герои не делают, мне только надо с подключением разобраться, потом я уже красоту наведу).
    Сторона MQL
    MQL-Код:
    
    //+------------------------------------------------------------------+
    //|                                                      1expert.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"
    #property strict
    // Description of the imported functions.
    #import "MqlSqlDemo.dll"
    
    // Function for opening a connection:
    int CreateConnection(string sConnStr);
    // End of import:
    #import
    //+------------------------------------------------------------------+
    //| Expert initialization function                                   |
    //+------------------------------------------------------------------+
    int OnInit()
      {
    //---
          Print("connection!!!!!!!!!!!!!!!");
       // Try to open a connection:
       if (CreateConnection("hgfffghj") != 1)
       {
          // Failed to establish the connection.
          // Print the message and exit:
          Print("Error when opening connection. ");
          return(INIT_FAILED);
       }
       Print("Connected to database.");
    
    //---
       return(INIT_SUCCEEDED);
      }
    //+------------------------------------------------------------------+
    //| Expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
      {
    //---
       
      }
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
      {
    //---
       
      }
    //+------------------------------------------------------------------+ 
    
    
    


    Название: Скриншот 15-07-2020 222643.png
Просмотров: 96

Размер: 12.2 КБ

    Я так понимаю, что где-то недокомпилировал... подскажите пожалуйста, что не так.


  2. post_thanks Получено лайков: 1

    Незарегистрированный (1 пользователь)

    <title>InstaForex</title><meta name="description" content="InstaForex"><a href="https://www.mt5.com/ru/forex_analysis">InstaForex</a>
  3. линк#2
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,292
    Накопленные выплаты (Подробнее):
    169750 RUB
    Поставил(а) лайков:
    932
    Получено лайков:   7,418
    в 3,564 сообщениях
    102%
    ПодписатьсяПодписаться
    Подписано 4
    Читаем, как вариант, тут и тут. Только вдумчиво...


  4. post_thanks Получено лайков: 1

    Незарегистрированный (1 пользователь)

  5. линк#3
    В начале пути
    cherik1 стараюсь положительно себя зарекомендовать Аватар для cherik1
    Регистрация:
    15.07.2020
    Пол:
    Мужчина
    Сообщений:
    12
    Накопленные выплаты (Подробнее):
    0 RUB
    Поставил лайков:
    1
    Поблагодарили 1 раз в
    1 сообщении
    8%
    ПодписатьсяПодписаться
    Подписано 0
    Так что вариант предложенный в статье на qml4 не прокатит?

    Последний раз редактировалось cherik1; 16.07.2020 в 22:14.

  6. линк#4
    В начале пути
    cherik1 стараюсь положительно себя зарекомендовать Аватар для cherik1
    Регистрация:
    15.07.2020
    Пол:
    Мужчина
    Сообщений:
    12
    Накопленные выплаты (Подробнее):
    0 RUB
    Поставил лайков:
    1
    Поблагодарили 1 раз в
    1 сообщении
    8%
    ПодписатьсяПодписаться
    Подписано 0
    Так что, он не видит RGiesecke.DllExport? куда его нужно поместить? в system32 или в папку скрипта?
    Я честно прочитал вашу статью 2 раза, конечно на данный момент изучать с++ и разные методы компиляции не планирую, да и не нужно это для моих изысканий, поэтому часть про виды компиляции честно половину не понял, ну и понятия с терминами там какие-то специфические...
    Но ваш код выдает ту же ошибку... я так понимаю qml4 тупо не видит RGiesecke.DllExport... но как эту ошибку исправить?


  7. post_thanks Получено лайков: 1

    Незарегистрированный (1 пользователь)

  8. линк#5
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,292
    Накопленные выплаты (Подробнее):
    169750 RUB
    Поставил(а) лайков:
    932
    Получено лайков:   7,418
    в 3,564 сообщениях
    102%
    ПодписатьсяПодписаться
    Подписано 4
    Цитата Сообщение от cherik1 Посмотреть сообщение
    Я честно прочитал вашу статью 2 раза ... честно половину не понял
    Значит таки не читали. Dll от .NET без танцев с бубном в MQL(эм-кью-эль, а не qml, как вы пишите ) работать не будет. А вот какие танцы и с каким бубном в статье, как раз и описано.

    Цитата Сообщение от cherik1 Посмотреть сообщение
    как эту ошибку исправить?
    В статье все описано до мелочей. Плюс кучу ссылок на нужную литературу там дали. И даже исходники примеров рабочие там приведены. Или вам надо, чтобы эту статью со всеми потрохами вам тут персонально пересказали?


  9. post_thanks Получено лайков: 2

    Незарегистрированный (2 пользователя)

  10. линк#6
    В начале пути
    cherik1 стараюсь положительно себя зарекомендовать Аватар для cherik1
    Регистрация:
    15.07.2020
    Пол:
    Мужчина
    Сообщений:
    12
    Накопленные выплаты (Подробнее):
    0 RUB
    Поставил лайков:
    1
    Поблагодарили 1 раз в
    1 сообщении
    8%
    ПодписатьсяПодписаться
    Подписано 0
    Да действительно, я не понимаю начиная со схемы взаимодействия особенно, не понимаю блоки с С++ кодами, если по честному я и говорил, что сейчас сложно изучать, и если бы хорошо знать С++, то ни какие С# по сути будут не нужны...
    Думаю, что эта статья написана для, программистов уже знающих С++... я же даже не знаю его синтаксис.
    Я знаю и понимаю только С#... сейчас вопрос в том захотите ли вы мне помогать в разборе непонятных мне частей этой статьи...
    Я вообще, извините, не понимаю зачем "стоит упомянуть все известные методы, возможно кто-то предпочтет использовать другой способ, отличный от того, который использую" (вот лично меня это только запутывает тут бы один понять) и какой ТОТ самый способ, который использует автор статьи...


  11. post_thanks Получено лайков: 1

    Незарегистрированный (1 пользователь)

  12. линк#7
    Специалист
    ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация ir0407 отличная репутация Аватар для ir0407
    Регистрация:
    02.12.2010
    Сообщений:
    7,292
    Накопленные выплаты (Подробнее):
    169750 RUB
    Поставил(а) лайков:
    932
    Получено лайков:   7,418
    в 3,564 сообщениях
    102%
    ПодписатьсяПодписаться
    Подписано 4
    Цитата Сообщение от cherik1 Посмотреть сообщение
    Я вообще, извините, не понимаю зачем "стоит упомянуть все известные методы, возможно кто-то предпочтет использовать другой способ, отличный от того, который использую" (вот лично меня это только запутывает тут бы один понять)
    Как раз именно для того, чтоб иметь представление о том, что и как в этом вашем .NET работает, как его заставить делать то, что вам необходимо и почему автор статьи выбрал именно то, что выбрал.
    Цитата Сообщение от cherik1 Посмотреть сообщение
    и какой ТОТ самый способ, который использует автор статьи...
    Ну я же вам говорил, читайте вдумчиво, а не по диагонали. И раз уж вы не узрели "ТОТ самый способ", позвольте ткнуть вас носом... Автор там, черным по белому, четко и ясно, пишет следующее...

    Вложение 3928245

    А дальше идут примеры, причем на чистейшем шарпее... Про который вы говорите...

    Цитата Сообщение от cherik1 Посмотреть сообщение
    Я знаю и понимаю только С#
    И на MQL. Или по вашему и в этих примерах синтаксис не С#?

    Цитата Сообщение от cherik1 Посмотреть сообщение
    сейчас вопрос в том захотите ли вы мне помогать в разборе непонятных мне частей этой статьи...
    Т.е. я по вашему должен написать за вас и отладить для вас вашу хотелку под видом "разбора непонятных вам частей"... Вы потом с чувством выполненого долга честно и бездумно скопипастите все к себе, оно у вас, по одной из сотен причин, не заработает и что дальше? Нет уж... Все па этого кардебалета вам придется осваивать самостоятельно, терпеливо, вдумчиво и возможно, судя по вашим постам, долго. Я вам дал ссылку на статью. Автор статьи дал вам удочку, основательно разжевав все подводные камни и выложив готовые рабочие примеры. Вам осталось только рыбку поймать.


  13. post_thanks Получено лайков: 2

    Незарегистрированный (2 пользователя)

  14. линк#8
    В начале пути
    cherik1 стараюсь положительно себя зарекомендовать Аватар для cherik1
    Регистрация:
    15.07.2020
    Пол:
    Мужчина
    Сообщений:
    12
    Накопленные выплаты (Подробнее):
    0 RUB
    Поставил лайков:
    1
    Поблагодарили 1 раз в
    1 сообщении
    8%
    ПодписатьсяПодписаться
    Подписано 0
    Вложение не существует или не указан идентификатор (номер). Если вы уверены, что использовали правильную ссылку, свяжитесь с администрацией


  15. линк#9
    В начале пути
    cherik1 стараюсь положительно себя зарекомендовать Аватар для cherik1
    Регистрация:
    15.07.2020
    Пол:
    Мужчина
    Сообщений:
    12
    Накопленные выплаты (Подробнее):
    0 RUB
    Поставил лайков:
    1
    Поблагодарили 1 раз в
    1 сообщении
    8%
    ПодписатьсяПодписаться
    Подписано 0
    >А дальше идут примеры, причем на чистейшем шарпее... Про который вы говорите...
    ну как же на читейшем, когда нужно писать обертку на С++?
    Я же повторил весь пример, уже даже для чистоты эксперимента 5 версию установил...
    она все равно выдает
    2020.07.19 19:09:11.756 my1script (USDRUR_i,H1) Cannot call 'Add', 'Testme.dll' is not loaded
    а что за обертку надо писать я вообще не понимаю как к ней подойти... короче всем спасибо...за участие...


  16. линк#10
    В начале пути
    cherik1 стараюсь положительно себя зарекомендовать Аватар для cherik1
    Регистрация:
    15.07.2020
    Пол:
    Мужчина
    Сообщений:
    12
    Накопленные выплаты (Подробнее):
    0 RUB
    Поставил лайков:
    1
    Поблагодарили 1 раз в
    1 сообщении
    8%
    ПодписатьсяПодписаться
    Подписано 0
    Вы потом с чувством выполненного долга честно и бездумно скопипастите все к себе, оно у вас, по одной из сотен причин, не заработает и что дальше?
    Вы понимаете, что когда что-то работает, из этого можно сделать что-то более сложное, так как ты видишь что оно работает и тебе проще от этого отталкиваться. А когда не работает даже пример из статьи.
    Так все-таки я не понимаю нужно ли в "4.1. Пример 1. Сложение двух переменных типа integer, double или float в функции DLL и возврат результата в MetaTrader 5" что-то еще кроме dll такого кода на mql5?
    Если вы говорите что там примеры на чистейшем шарпе, то где тогда эти танцы с бубнами.
    Все равно в статье написано:
    Для тестирования работы прилагаемых программ разместите файлы в следующих каталогах:
    MQL5\Libraries\testme.dll
    MQL5\Scripts\unmanagedexportsdllexample1.mq5
    Уж с этим то я могу справиться я думаю... но он все равно не дает мне Cannot call 'Add', 'Testme.dll' is not loaded

    Последний раз редактировалось cherik1; 19.07.2020 в 22:08.

  17. линк#11
    Свой человек
    АнтонР85 хорошая репутация АнтонР85 хорошая репутация АнтонР85 хорошая репутация Аватар для АнтонР85
    Регистрация:
    30.06.2016
    Пол:
    Мужчина
    Сообщений:
    675
    Накопленные выплаты (Подробнее):
    24049 RUB
    Поставил лайков:
    165
    Получено лайков:   296
    в 238 сообщениях
    44%
    ПодписатьсяПодписаться
    Подписано 0
    Цитата Сообщение от cherik1 Посмотреть сообщение
    Здравствуйте!
    Привет! Если нужно для MQL5, то все просто. Ссылка
    Нажмите на изображение для увеличения
Название: Screenshot_123.png
Просмотров: 12
Размер:	92.0 КБ
ID:	3932538
    Вот пример для передачи "туда-обратно" строки и массива чисел.Нажмите на изображение для увеличения
Название: Screenshot_122.png
Просмотров: 10
Размер:	44.7 КБ
ID:	3932536
    Чтобы не делать лишних "телодвижений" можно сразу прописать путь куда VS будет генерировать исполняемый файл.
    Нажмите на изображение для увеличения
Название: Screenshot_121.png
Просмотров: 14
Размер:	62.8 КБ
ID:	3932537
    Ну и сами вызовы на MQL.
    MQL-Код:
    
    #property copyright "Copyright 2019, MetaQuotes Software Corp."
    #property link      "https://www.mql5.com"
    #property version   "1.00"
    #import "ClassLibrary1.dll"
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
        Print(Класс::Метод("Привет!!!"));
        int массив[5]; Класс::Метод(массив);
        for(int i = 0; i < 5; i++) { Print(массив[i]); }
      }
    //+------------------------------------------------------------------+ 
    
    
    

    Должно получиться так
    Нажмите на изображение для увеличения
Название: Screenshot_124.png
Просмотров: 8
Размер:	127.1 КБ
ID:	3932549
    а потом так.
    Нажмите на изображение для увеличения
Название: Screenshot_125.png
Просмотров: 11
Размер:	135.8 КБ
ID:	3932548


  18. post_thanks Получено лайков: 3

    cherik1 (20.07.2020), MitraHder (20.07.2020), Незарегистрированный (1 пользователь)

    forex_club_bonus
  19. линк#12
    В начале пути
    cherik1 стараюсь положительно себя зарекомендовать Аватар для cherik1
    Регистрация:
    15.07.2020
    Пол:
    Мужчина
    Сообщений:
    12
    Накопленные выплаты (Подробнее):
    0 RUB
    Поставил лайков:
    1
    Поблагодарили 1 раз в
    1 сообщении
    8%
    ПодписатьсяПодписаться
    Подписано 0
    Ну вот я только нашел пример с соккетами на пайтоне... собственно говоря мне c# нужно было для передачи в sql server данных...там бы я анализировал все в бесконечном цикле пайтоне и давал ответ в базу! От туда я хотел запросом выбирать и в зависимости от того что в базе открыть ордер... Но теперь то все это можно сделать через соккет


  20. post_thanks Получено лайков: 1

    АнтонР85 (20.07.2020)


Подписанные на тему (1)

Открыть

Похожие темы

  1. Правильная торговля
    от RTX1 в разделе Трейдерские университеты
    Replies: 8412
    Последнее сообщение: 03.12.2020, 12:41
  2. Правильная мотивация = успех
    от xakep-qwe в разделе Трейдерские университеты
    Replies: 2163
    Последнее сообщение: 01.11.2020, 10:29
  3. Православие - это правильная вера или обман?
    от shyra89 в разделе Свободное общение
    Replies: 57
    Последнее сообщение: 30.09.2020, 09:01
  4. Правильная торговля
    от Forexs в разделе Дневники трейдеров
    Replies: 3
    Последнее сообщение: 11.07.2017, 16:57