Я программирую на C ++, использую Visual Studio 2008, Windows XP, и у меня возникает следующая проблема: Мое приложение, которое представляет собой DLL, которую можно использовать из Python, загружает внешнюю DLL, использует необходимыеметоды, а затем выгружает эту внешнюю Dll.Он работает правильно, но после более 1000 циклов метод «LoadLibraryA» возвращает нулевую ссылку.
Основные шаги:
HINSTANCE h = NULL;
h = LoadLibraryA(dllfile.c_str());
DWORD dw = GetLastError();
Получена ошибка:
ERROR_DLL_INIT_FAILED
1114 (0x45A) A dynamic link library (DLL) initialization routine failed.
Dll выгружается с помощью следующего:
FreeLibrary(mDLL);
mDLL = NULL;
Где mDLL определяется следующим образом:
HINSTANCE mDLL;
Первая попытка: просто загрузите Dll только один раз, ивыгрузил его, когда приложение заканчивается.Это решает проблему, но вводит новую.
Когда приложение заканчивается, вместо того, чтобы сначала выполнить метод DllMain моего приложения, который выгружает внешнюю DLL, сначала выполняет метод DllMain другого Dll.Это вызывает следующую ошибку, потому что мое приложение пытается выгрузить Dll, который был выгружен ранее самостоятельно.
"Необработанное исключение в 0x04a00d07 (DllName.DLL) в Python.exe: 0xC0000005: Местоположение чтения нарушения доступа 0x0000006b".
Любое предложение будет приветствоваться.Заранее спасибо.Привет.