質問:
funci( ) で、この関数を C からロードしてアクセスしようとしています。ただし、「'func' はこのスコープで宣言されていません。」というエラーが発生します。 DLL のポインタを使用して関数にアクセスするにはどうすればよいですか?
答え:
ステップ 1: DLL をロードする
HINSTANCE hGetProcIDDLL = LoadLibrary("C:\path\to\test.dll");
これにより、DLL がプロセスにロードされます。
ステップ 2: 関数アドレスを解決する
GetProcAddress を使用して関数のアドレスを取得する必要があります。
typedef int (__stdcall *f_funci)(); // Define function pointer f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci");
ステップ 3 : 関数アドレスの検証
関数アドレスが正常に取得されました。
if (!funci) { std::cout << "Could not locate the function" << std::endl; return EXIT_FAILURE; }
ステップ 4: 関数を呼び出す
関数ポインターを取得したら、それを呼び出すことができます。
std::cout << "funci() returned " << funci() << std::endl;
ステップ 5: DLL を解放する(オプション)
FreeLibrary() を使用して DLL ハンドルを解放し、メモリから DLL をアンロードします。
FreeLibrary(hGetProcIDDLL);
追加のヒント:
以上がC で DLL から関数を動的にロードして呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。