Загрузка dll с явной загрузкой c ++ - PullRequest
1 голос
/ 16 февраля 2012

Я вызываю 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
    /*-----------------------------*/
}

Большое спасибо за вашу помощь.

Кристовао Сантос

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

Вы не проверяете возвращаемые значения из LoadLibrary() или GetProcAddress() - они работают?

Возможно, вы неправильно указали имя / путь к DLL или имя экспортируемой функции.Помните, что функции stdcall обычно имеют суффикс "@nn", который соответствует размеру списка параметров.Но это не всегда так.

0 голосов
/ 16 февраля 2012

Возможно, вам понадобится использовать широкие символы при вызове LoadLibrary:

HINSTANCE hGetProcIDDLL = LoadLibrary(L"c:\\emvlib\\I_krnfct.dll"); /* notice the L */
...