我正在明确地调用一个dll,一切正常......问题是当我从函数中返回一个值,我正在加载de dll(释放它)程序停止(看起来像)..似乎有些东西不让程序继续......
我的代码:
xfsManager::StartUp(...)
{
WORD result=0;
HINSTANCE hGetProcIDDLL = LoadLibrary("c:\\emvlib\\I_krnfct.dll");
FARPROC lpfnGetProcessID = GetProcAddress(HMODULE (hGetProcIDDLL),EMV_KERNEL_INITIALIZATION);
typedef DWORD (__stdcall * pICFUNC)(LPSTR);
pICFUNC dllFunction;
dllFunction = pICFUNC(lpfnGetProcessID);
DWORD sTmpRc = 0;
sTmpRc = dllFunction("something");
if(sTmpRc != EMV_OK)
{
//NOT OK
}
else
{
//OK
}
FreeLibrary(hGetProcIDDLL);
return XFS_OK; // EXITING
/*-----------------------------*/
}
非常感谢你的帮助。
Cristovao Santos
答案 0 :(得分:1)
您没有检查LoadLibrary()
或GetProcAddress()
的返回值 - 这些是否有效?
可能您的DLL名称/路径或导出的函数名称错误。请记住,stdcall函数通常具有与参数列表大小相对应的“@nn”后缀。但事情并非总是如此。
答案 1 :(得分:0)
您可能需要在调用LoadLibrary时使用宽字符:
HINSTANCE hGetProcIDDLL = LoadLibrary(L"c:\\emvlib\\I_krnfct.dll"); /* notice the L */