明示的に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サントス
デバッグを試しましたか? – LihO
署名「DWORD(__stdcall * pICFUNC)(LPSTR)」がDLL関数の署名と呼び出し規約と正しく一致していますか? –
私は最良の方法を説明しませんでした。この問題は、dllの呼び出しとそれが返す値ではない(パラメータとして間違った値を送ると関数がdllエラーを返すため)が、関数がStartUp(この例では)を終了すると...この関数を呼び出した直後のログ書き込みは書き込まれませんが、StartUp関数内のすべてのログが書き込まれます...そして、なぜ私は理解できません! PS:署名は大丈夫です... – user1214476