明示的にライブラリをロードするためのきれいな方法を探しています。ほとんどの場合、私はLIBとDLLのペアを持っているので、LIBはすべての "load stuff"を扱い、私はdllの関数を直接呼び出すことができます。明示的にこれを行うとき、私は次のようなものを実行する必要がありますLoadLibrary関数(場合明確な方法でライブラリを明示的にロードする
HMODULE libA = LoadLibrary("dllA.dll"); // NULL if load failed
HMODULE libB = LoadLibrary("dllB.dll"); // NULL if load failed
void (*functionA)(void) = libA ? GetProcAddress(libA,"functionA"):NULL;
void (*functionB)(void) = libB ? GetProcAddress(libB,"functionB"):NULL;
それは乱雑になります)、私はDLL内の関数を呼び出すために必要がある場合のGetProcAddress()はすべての私のコードの上に発見されました。私は1-2ファイル内のすべての処理を記述し、LIBとDLLのペアを介して暗黙的にライブラリをロードしているかのように関数を呼び出すことができるようなきれいな方法があるかどうかを知りたいと思います。
すべての関数ポインタを取得して使用するために、一度に1つの場所で 'LoadLibrary'と' GetProcAddress'を呼び出すことができます。このDLLの遅延ロードを実装することもできます – RbMm
これはプログラミング101です。この機能を包括する関数またはクラスを作成し、詳細から保護します。 –
また、[Boost.DLL](http://www.boost.org/doc/libs/release/doc/html/boost_dll.html)を見て、いくつか抽象化しているかもしれません。まだ使用していませんが、[examples](http://www.boost.org/doc/libs/release/doc/html/boost_dll/tutorial.html#boost_dll.tutorial.plugin_basics)はきれいに見えます。 – zett42