1

私は明示的に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
    /*-----------------------------*/
}

どうもありがとうございました。

クリストバオ・サントス

4

2 に答える 2

1

LoadLibrary()またはからの戻り値をチェックしていません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 に答える