DLLの読み込みはWindows環境ならば LoadLibrary/GetProcAddres/FreeLibrary
という3つの関数を使います。
DLLのモジュールハンドルを自動的に解放させたい場合は std::unique_ptr (<memory>ヘッダー)を使います。
cpp
1typedef std::function<void(HMODULE)> dll_deleter;
2dll_deleter deletedll = [](HMODULE ptr) { FreeLibrary(ptr); };
というようなDLLのモジュールハンドルが削除されるようにして
cpp
1typedef MessageBoxPtr(HWND, LPSTR, LPSTR, UINT);
2{
3std::unique_ptr<HMODULE, dll_delete>
4 dll(LoadLibrary("user32.dll"), delete_dll);
5} // スコープを抜けるとDLLのハンドルは解放されます。
これで解放漏れがなくなります。
あとは GetProcAddres(dll.get(), "関数名");
というように呼び出せば DLLの関数のアドレスを取得できます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/02 15:19