我在 C++ Visual Studio 2012 中有这个小代码,用于从使用 cygwin 构建的 dll 文件中调用静态函数,下面的代码完全有效。问题是,有时它会在函数调用时崩溃,或者像往常一样将结果值输出到控制台,但 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;