我正在尝试将LoadLibrary调用为放置在exe路径中的dll。 它给出错误为ERROR_FUNCTION_FAILED。以下是代码,请让我知道1627的原因
typedef int (__stdcall *func)();
int DynamicLoad_Lib()
{
func call;
int iReturn;
cout<<"\n\n DynamicLoad_Lib \n\n";
HINSTANCE hinstLib = LoadLibrary(L"MYLib.dll");
cout<<"\n\nGetLastError() "<<GetLastError()<<"\n";
if(hinstLib == NULL)
return 0;
call = (func_another)GetProcAddress(hinstLib, "Initialize");
if(call == NULL)
{
FreeLibrary(hinstLib);
return 0;
}
iReturn = (*call)();
call = (func)GetProcAddress(hinstLib, "Terminate");
if(call == NULL)
{
FreeLibrary(hinstLib);
return 0;
}
FreeLibrary(hinstLib);
return 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
DynamicLoad_Lib();
return 0;
}
答案 0 :(得分:0)
这将打印出任何Windows API函数中发生的最后一个错误:
cout<<"\n\nGetLastError() "<<GetLastError()<<"\n";
if(hinstLib == NULL)
return 0;
应该是,打印LoadLibrary函数中发生的任何错误:
if(hinstLib == NULL)
{
cout<<"\n\nGetLastError() "<<GetLastError()<<"\n";
return 0;
}
返回值
如果函数成功,则返回值是模块的句柄。
如果函数失败,则返回值为NULL。要获得扩展错误 信息,调用GetLastError。