Как объявить глобальную переменную в основной программе чтобы затем,в dll получить к ней доступ?
Оптимальный способ доступа к переменной, находящейся в основной программе, из DLL это сделать в библиотеке функцию, которая будет принимать адрес и дальше работать с переменной через этот адрес. Пример:
__declspec(dllexport) void useData(T* data) {
// используем data-> ...
}
В программе же вызывать эту функцию, передавая адрес глобальной переменной:
T gData;
useData(&gData);
В итоге, как сделал: в главной функции exe объявил функцию из dll следующим образом:
__declspec(dllexport) void _stdcall setHwnd(HWND*, HHOOK*);
Затем, в dll завёл две static - переменные, которые буду хранить нужные мне значения. И далее, вызвал эту функцию в главной программе:
setHwnd(&hwnd_main, &hCBTHook);
В dll функция выглядит так:
__declspec(dllexport) void _stdcall setHwnd(HWND* hwnd, HHOOK* hhook)
{
hwnd_main = *hwnd;
hCBTHook = *hhook;
}
И всё работает. Спасибо.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как узнать длину массива, который объявлен в другой функцииВнутри функции все работает, но нет доступа из другой функции
Каким образом можно работать с классом С в классе В?