У меня есть этот небольшой код в 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;
Для тех, кто когда-либо возвращает char * из статической функции DLL, вы должны размещать char [] не в dll, а в своем приложении (вызывающей стороне).
Других решений пока нет …