Вопрос по GetLastError

 
1. Зачем код ошибки зануляется после вызова GetLastError? Это не совсем удобно при работе.

2. Есть mq4 library (описана как #property library).
В этой библиотеке есть такой код:
int code = 0;

int Get() {
  return (code);
}

void Set(int c) {
  code = c;  
}


Запустил 2 эксперта. Каждый из них импортирует функции Get и Set.
Первый вызывает Set, второй Get.
Обнаружилось, что после вызова Set первого эксперта второй не возвращает это значение с помощью Get.
Т.е. каждый эксперт делает свою копию переменной code?
Просьба прокомментировать.

 
1. Это стандартный и правильный способ работы.

2. Правильно - библиотека же в пространство разных экспертов загружается.
 
1. Это стандартный и правильный способ работы.


Запустил свой старый добрый шестой Visual Studio.
  SetLastError(123);
	
  DWORD code1 = GetLastError();
  DWORD code2 = GetLastError();
  DWORD code3 = GetLastError();	



Во всех 3-х переменных 123. Ничего не зануляется.

2. Правильно - библиотека же в пространство разных экспертов загружается.


Каждый новый эксперт - это новый процесс? Заранее прошу простить за мою темноту.

 

Запустил свой старый добрый шестой Visual Studio.

Предусмотренное нами поведение реализовано для большинства пользователей, более простых и не таких продвинутых, как Вы.


Каждый новый эксперт - это новый процесс? Заранее прошу простить за мою темноту.

Прочитайте в словаре МетаЭдитора топики "Выполнение программ" и "Импорт функций". В сегодняшнем исправленном билде добавился топик "Ошибки выполнения"
 
Вы хотите сказать, что все глобальные переменные библиотеки преобразуете в thread local variables?
 
Вы хотите сказать, что все глобальные переменные библиотеки преобразуете в thread local variables?

Наши библиотеки - это не DLL. Их копии загружаются/привязываются к каждому эксперту в отдельности. Каждый эксперт полностью независим от остальных и работает в своем собственном потоке(не процессе).
Причина обращения: