Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А где там про размер почитать?
Там, не знаю. ищите что-нибудь на тему "LLP64 data model", например здесь https://en.wikipedia.org/wiki/64-bit_computing. Сам C/C++ каких-то конкретных размеров не задаёт http://en.cppreference.com/w/cpp/language/types
А где там про размер почитать?
простейшее действие - напечатать размер типов из С 64x и соотнести с MQL :-) Как ни странно это быстрее чем погрязнуть в документации
размерности должны сходится, иначе вызов DLL мягко говоря гадитпростейшее действие - напечатать размер типов из С 64x ***
Вы сейчас про MQL5?
Вы сейчас про MQL5?
да, конечно.. я же не зря сказал про 64 :-)
просто распечатать sizeof(typeName) там и там..один раз из MT5 другой - из С собранного в 64 бита.
кол-во байт должно сходится, чтобы не вызывать системных проблем. Для общепринятых типов ещё можно составить таблицу, но если какая-нить библиотека C/C++ использует например целый скаляр mps_t, то проще напечатать его размер чем перекопать все исходники выясняя от кого он произошёл
*** другой - из С собранного в 64 бита.
***
Меня смущают эти строки. Уточняю во-второй раз: Вы точно про MQL5?
Меня смущают эти строки. Уточняю во-второй раз: Вы точно про MQL5?
Вы на чём-нибудь программировали кроме MQL ? понятие ABI что-нибудь говорит ??
потому что элементарные вещи - тип названный "int" или "supertype" в MQL и одноимённые типы в документации MSDN они имеют полное право быть разными. Чтобы сработала DLL вы должны передавать равное кол-во байтов. Ровно то что ожидается DLL-кой.
update: и точно также со структурами - взяли С-шную структуру из документации, описали её в MQL. И первое что надо сделать - проверить размеры. Они должны быть идентичныMT5 работает в 64 бита. Скомпилите в те-же 64 бита С-шник и напечайте размера типов требуемых DLL - вы узнаете сколько байт надо передавать/принимать в аргументах.
Вы на чём-нибудь программировали кроме MQL ? понятие ABI что-нибудь говорит ??
потому что элементарные вещи - тип названный "int" или "supertype" в MQL и одноимённые типы в документации MSDN они имеют полное право быть разными. Чтобы сработала DLL вы должны передавать равное кол-во байтов. Ровно то что ожидается DLL-кой.
MT5 работает в 64 бита. Скомпилите в те-же 64 бита С-шник и напечайте размера типов требуемых DLL - вы узнаете сколько байт надо передавать/принимать в аргументах.
Нет, ничего лишнего, кроме MQL5 на компьютере не стоит.
А вот, то что я передаю неправильное количество байт в
я понимаю. Вот только до сих пор не ясно, сколько же нужно передавать.
Вы на чём-нибудь программировали кроме MQL ? понятие ABI что-нибудь говорит ??
потому что элементарные вещи - тип названный "int" или "supertype" в MQL и одноимённые типы в документации MSDN они имеют полное право быть разными. Чтобы сработала DLL вы должны передавать равное кол-во байтов. Ровно то что ожидается DLL-кой.
update: и точно также со структурами - взяли С-шную структуру из документации, описали её в MQL. И первое что надо сделать - проверить размеры. Они должны быть идентичныMT5 работает в 64 бита. Скомпилите в те-же 64 бита С-шник и напечайте размера типов требуемых DLL - вы узнаете сколько байт надо передавать/принимать в аргументах.
Что нужно минимально поставить, чтобы проверять размеры (C, C++, ...) и главное КАК там проверить?
Страница Visual Studio - три варианта:
что выбрать?
Операционку указывал тут
Я же несколько раз уточнил - нужно передавать массив char. Вы же используете string. Нужно чтобы работало с массивом char