Ошибки, баги, вопросы - страница 1037

 
A100:
Вы имеете ввиду, что если .dll выгружается, то и все данные теряются? Пробовал - но с потерей данных не сталкивался - наверное как то система понимает, что не нужно выгружать до какого то момента

Я имею в виду, что extern-переменные связываются во время компиляции. 

DLL (и mql-библиотека) не компилируются вместе с основной программой, следовательно не могут быть связаны.  Недоработка stringo, в принципе, должна вылазить ошибка при компиляции. Она есть, это очевидно.

https://www.mql5.com/ru/docs/basis/variables/externvariables

Extern переменные

Ключевое слово extern используется, чтобы объявить идентификаторы переменных как идентификаторы статического класса памяти с глобальным временем жизни. Такие переменные существуют с момента начала выполнения программы и для них память выделяется и инициализируется сразу после начала выполнения программы.

Можно создавать программы, которые состоят из нескольких исходных файлов, для этого используется директива препроцессору #include. Переменные, объявленные как extern с одним и тем же типом и идентификатором, могут существовать в разных исходных файлах одного проекта.

При компиляции всего проекта все extern-переменные с одним и тем же типом и идентификатором ассоциируются с одним участком памяти пула глобальных переменных. Extern-переменные полезны для раздельной компиляции исходных файлов. Extern-переменные можно инициализировать, но только однократно –  недопустимо существование нескольких инициализированных extern-переменных одного и того же типа и с одним и тем же идентификатором.

 
zfs:
Переменная инициализируется 2 раза, хотя бы эту ошибку уберите для начала и используйте новую переменную для расчета.

https://www.mql5.com/ru/forum/1111/page1053#comment_570931

Пронумеровал строки. Какую именно строку в каком файле - убрать?

 
A100:

https://www.mql5.com/ru/forum/1111/page1053#comment_570931

Пронумеровал строки. Какую именно строку в каком файле - убрать?

20 строку в основном и будет видимость везде.
 
zfs:
20 строку в основном и будет видимость везде.
Убрал
10 //test.mq5
20
30 #import "testLib.ex5"
40          void f();
50 #import
60 void OnStart()
70 {
80         e1 = 10;
90         f();
100 }
Не компилируется e1 - undeclared identifier, что ожидаемо.
 
zfs:
Так вроде вам в сентябре обещали).

Не, про сентябрь был не в курсе.

Заявку в Сервисдеске закрыли - мол, пофикшено в следующем билде. Здесь, на форуме, тоже ничего не видел.

Ну, да ладно - спасибо за информацию. 

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
A100:
УбралНе компилируется e1 - undeclared identifier, что ожидаемо.

в mqh вынесите и подключите к обоим файлам

 
zfs:

в mqh вынесите и подключите к обоим файлам

Вынес, подключил

https://www.mql5.com/ru/forum/1111/page1053#comment_569138 

результат не изменился

 
A100:

Вынес, подключил

https://www.mql5.com/ru/forum/1111/page1053#comment_569138 

результат не изменился

А TestLib тут при чём?

Давайте с другого конца. Скажите, какой результат Вы хотите получить? Чего Вы добиваетесь? По пунктам

 
stringo:

Давайте с другого конца. Скажите, какой результат Вы хотите получить? Чего Вы добиваетесь? По пунктам

Хочу получить переменную, которую можно читать и писать в нескольких .ex5 модулях
 
A100:
Хочу получить переменную, которую можно читать и писать в нескольких .ex5 модулях
Глобальную создайте.
Причина обращения: