Visual Studio 2012 — LoadLibrary — правильная очистка в переполнении стека

У меня есть этот небольшой код в C ++ Visual Studio 2012 для вызова статической функции из сборки файла dll с помощью cygwin, и этот код ниже полностью работает. проблема в том, что иногда происходит сбой при вызове функции или выводятся значения результатов, как обычно, на консоль, но отладчик в Visual Studio не движется вперед. Странное поведение Наверное, я не правильно очищаюсь после выхода из приложения? При первой загрузке VS он работает, но после некоторой отладки и сбоев это начинает происходить.

PFN_HELLO fnHello;
HMODULE hLib, h = LoadLibrary(TEXT("cygwin1.dll"));
PFN_CYGWIN_DLL_INIT init = (PFN_CYGWIN_DLL_INIT) GetProcAddress(h,"cygwin_dll_init");
init();

hLib = LoadLibrary (TEXT("cyghello.dll"));

if (NULL == hLib)
{
DWORD _err = GetLastError();
//return 1;
}

//typedef LRESULT (WINAPI *PFN)(HWND, UINT, WPARAM, LPARAM);
// PFN MySendMessageW;

//MySendMessageW = (PFN) GetProcAddress(hLib,"runMainRoutine");

fnHello = (PFN_HELLO) GetProcAddress (hLib, "runMainRoutine@4");if (NULL == fnHello)
{
DWORD _err = GetLastError();
//return 1;
}char* _bablabla = fnHello(_input);

FreeLibrary(h);
FreeLibrary(hLib);

return _bablabla;

0

Решение

Для тех, кто когда-либо возвращает char * из статической функции DLL, вы должны размещать char [] не в dll, а в своем приложении (вызывающей стороне).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]