FAQ:WinAPI VCPP:общие для разных процессов переменные в DLL
Материал из Весельчак У
Версия от 15:49, 3 октября 2009; RXL (обсуждение | вклад) (Новая: ===Я написал DLL, которую используют несколько приложений. Всё работает, но когда происходит очередной в...)
Я написал DLL, которую используют несколько приложений. Всё работает, но когда происходит очередной вызов функции из DLL, почему то, данные в функции обнуляются. С чем это связано?
Переменные и массивы в DLL, содержимое которых должно использоваться несколькими процессами, должны объявляться статическими. Статическая переменная или массив инициализируются только один раз в момент загрузки DLL.
Пример:
DWORD calltest() { // будет выполнено только при первом вызове static DWORD callcount = 0; static DWORD str[1000] = {0}; // будет выполняться каждый раз callcount++; return callcount; }