1

I'm calling a dll explicitally, and everything works fine... The problem is when i return a value from the function where i am loading de dll (a releasing it) the program stops (it looks like)... It seems something dont let the program proceeds...

My code:

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
    /*-----------------------------*/
}

Thanks a lot for your help.

Cristovao Santos

4

2 回答 2

1

您没有检查来自LoadLibrary()or的返回值GetProcAddress()- 这些是否有效?

也许您的 DLL 名称/路径或导出的函数名称错误。请记住,stdcall 函数通常具有与参数列表大小相对应的“@nn”后缀。但这并不总是正确的。

于 2012-02-17T02:18:35.123 回答
0

您可能需要在调用 LoadLibrary 时使用宽字符:

HINSTANCE hGetProcIDDLL = LoadLibrary(L"c:\\emvlib\\I_krnfct.dll"); /* notice the L */
于 2012-02-16T19:17:39.443 回答