我打電話給一個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