Winamp 入力プラグインをロードするラッパー プログラムを作成しています。これまでのところ、かなりの数のプラグインでうまく機能していますが、他のいくつかのプラグインでは、プラグインの DLL で LoadLibrary を呼び出そうとすると、実行時にエラー メッセージが表示されます。(ほとんどの場合、Winamp に含まれているプラグインで発生するようです。) ダイアログが表示され、上記のエラー コードとメッセージが表示されます。これは、たとえば、in_flac.dll および in_mp3.dll プラグイン (Winamp に付属) で発生します。この状況をどのように改善できるかについてのアイデアはありますか?
編集:これは基本的に、ディレクトリ内のプラグインを反復処理し、それぞれをロードしてから解放しようとします。上記のエラーを生成するプラグインもあれば、生成しないプラグインもあります。
wstring path = GetSearchPath();
FileEnumerator e(path + L"in_*.dll");
while(e.MoveNext()) {
wstring pluginPath = path + e.GetCurrent().cFileName;
MessageBoxW(NULL, pluginPath.c_str(), L"Message", MB_OK);
HINSTANCE dll = LoadLibraryW(pluginPath.c_str());
if(!dll) {
pluginPath = wstring(L"There was an error loading \"") + wstring(e.GetCurrent().cFileName) + L"\":\n" + LastErrorToString();
MessageBoxW(NULL, pluginPath.c_str(), L"Error", MB_OK);
continue;
}
FreeLibrary(dll);
}