我打电话给一个dll显式地,并且一切工作正常......问题是当我从加载de dll函数返回一个值(释放它)程序停止它看起来像)......似乎什么不要让程序进入...加载dll与C++显式加载
我的代码:
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桑托斯
你试过调试过吗? – LihO 2012-02-16 18:07:54
您确定签名DWORD(__stdcall * pICFUNC)(LPSTR)正确匹配DLL函数的签名和调用约定吗? – 2012-02-16 18:13:26
我没有解释最好的方法。问题不在于调用dll和它返回的值(因为如果我发送一个错误的值作为参数,该函数将返回dll错误),但是当进程退出函数StartUp(在该示例中)...调用此函数后不立即写入日志,但StartUp函数中的所有日志都被写入...而我不明白为什么! PS:签名是好的... – user1214476 2012-02-17 10:50:18