внешние переменные (extern)

 
Добрый день.
Правильно ли я понял, что объявления extern переменых отрабатывают правильно только в основном файле-модуле эксперта? Включения extern переменных в остальные файлы отрабатывают неправильно.
Как только управление передается в неосновной модуль, независимо от того, объявлен он как библиотека (property library) или нет, используются значения внешних переменных по умолчанию, а не те, которые установлены вручную в диалоге свойств эксперта в закладке пераметров. Какой смысл было тогда заводить библиотеки если они не могут правильно использовать общие глобальные параметры эксперта? Спасибо.
С уважением,
 
Глобальные переменные описанные модификатором extern описывают параметры запуска экспертов и индикаторов т.е. переменные хранятся не в модуле а в контексте чарта (доступных для пользователей). Во всех остальных случаях этот модификатор игнорируется и на этапе загрузки переменные создаются как статические.

В текущей версии языка MQL4 глобальные переменные всегда статические.
Смысл библиотек такой же как и в любых других языках - набор функций.
 
т.е. способа получить значения параметров эксперта из библиотек не существует?
 
т.е. способа получить значения параметров эксперта из библиотек не существует?


через функции.

в эксперте:

#import "mylib.ex4"

extern int param1, param2;

int init()
{
   SetParam1(param1);
   SetParam2(param1);
   return(0);
}

int start()
{
   Print("Someproc returns ",SomeProc());
}



библиотека

int param1,param2;

void SetParam1(int value)
{
   param1=value;
}

void SetParam2(int value)
{
   param2=value;
}

int SomeProc()
{
   return(param1*param2);
}
 
Спасибо за ответ. У меня так и сделано. Хотя решение не очень красивое. Если я включаю в эксперт несколько библиотек, например, обработку ошибок, отладку, установку ордеров и т.д., то я в каждой библиотеке должен инициализировать переменные. В планах нет все-таки разрешить использовать внешние переменные как они и должны быть использованы, т.е. на стадии линковщика?
 
К сожалению, прямой доступ к внешним переменным из других библиотек мы не будем открывать.
Причина обращения: