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;
}