2012-02-16 18 views
1

明示的にdllを呼び出すと、すべて正常に動作します...問題は、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 
    /*-----------------------------*/ 
} 

おかげで多くのことを:何かが...進む

私のコードを聞かせてはいけないようです...)のように見えます。

あなたはLoadLibrary関数への通話にワイド文字を使用する必要があるかもしれません

Cristovaoサントス

+2

デバッグを試しましたか? – LihO

+5

署名「DWORD(__stdcall * pICFUNC)(LPSTR)」がDLL関数の署名と呼び出し規約と正しく一致していますか? –

+0

私は最良の方法を説明しませんでした。この問題は、dllの呼び出しとそれが返す値ではない(パラメータとして間違った値を送ると関数がdllエラーを返すため)が、関数がStartUp(この例では)を終了すると...この関数を呼び出した直後のログ書き込みは書き込まれませんが、StartUp関数内のすべてのログが書き込まれます...そして、なぜ私は理解できません! PS:署名は大丈夫です... – user1214476

答えて

0

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

私は最良の方法を説明しませんでした。この問題は、dllの呼び出しとそれが返す値ではない(パラメータとして間違った値を送ると関数がdllエラーを返すため)が、関数がStartUp(この例では)を終了すると...この関数を呼び出した直後のログ書き込みは書き込まれませんが、StartUp関数内のすべてのログが書き込まれます...そして、なぜ私は理解できません! – user1214476

+0

OKです。そのため、DLL関数内に書き込まれるログファイルは動作していませんが、呼び出し元関数からのログファイル書き込みは機能します。これは正しいです? – macduff

+0

いいえ...ログファイルにはStartUp関数のログがありますが、値を返すと(XFS_OK;を返します)、その後、ログファイルに何も表示されません...だから、 DLL(この場合StartUp)はまだ動作している、何かをしています...理由はわかりません... – user1214476

1

あなたはLoadLibrary()またはGetProcAddress()からの戻り値をチェックしていない - これらは、働いていますか?

DLL名/パスまたはエクスポートされた関数名が間違っている可能性があります。 stdcall関数は通常、パラメータリストのサイズに対応する接尾辞「@nn」を持っていることに注意してください。しかし、それは常に真実ではありません。

+0

私は最良の方法を説明していない。この問題は、dllの呼び出しとそれが返す値ではない(パラメータとして間違った値を送ると関数がdllエラーを返すため)が、関数がStartUp(この例では)を終了すると...この関数を呼び出した直後のログ書き込みは書き込まれませんが、StartUp関数内のすべてのログが書き込まれます...そして、なぜ私は理解できません! – user1214476

関連する問題