3

で実行できるメソッドでライブラリを書こうとしているのですrundll32.exeが、適切なエクスポート名の生成を強制することはできないようです:

32ビット構成で取得DoStuff(x,x,x,x)
64ビット構成で取得DoStuff

何故ですか?

ツール: Visual Studio 2012; ウィンドウズ8

コード:

extern "C" __declspec(dllexport) void __stdcall DoStuff(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow)
{
    MessageBoxA(NULL, lpszCmdLine, "Cookies", 0);
}
4

1 に答える 1

4

dllexport関数で使用しているため、これが発生していると思いますstdcallstdcallx86の規則では、呼び出し先がスタックからパラメーターを削除します。したがって、パラメーター数は名前の一部として含まれます。x64 では、標準の呼び出し規則はレジスタ渡しであるため、パラメーター情報は含まれていません。

于 2013-03-10T00:46:02.370 に答える