DirectShowアプリケーションでは、そのリンクのソースがないサードパーティDLL(32ビットDirectShowフィルタ)がありますインテルスレッディングビルディングブロック(tbb.dll)の32ビットWindows版。同じプロセスで異なるバージョンのVisual Studioに対してコンパイルされたDLLがスレッディングビルディングブロックを使用する方法
同じプロセス(別の32ビットDirectShowフィルタなど)で独自のDLLでスレッディングビルディングブロックを使用する場合、このサードパーティ製DLLの作成者と同じバージョンのVisual Studioを使用する必要がありますか?
EDIT - このシナリオでは、バージョンに依存しない_mtライブラリがおそらく最適です。サードパーティのベンダーがこの_mt dllをビルドしていないとどうなりますか?
私自身のスレッディングビルディングブロックのインストールでは、Visual Studio 2005、2008、2010と 'MT'の異なるバージョンのtbb.dllのバージョンが異なっていることに気づきました。 1つの明白な理由の1つは、異なるバージョンのtbb.dllが異なるバージョンのVisual StudioランタイムライブラリDLLとリンクすることです。検査で必要なtbb.dllのバージョンを知ることは可能でしょうか、または使用されているコンパイラのバージョンを示すバイナリ内の文字列を探す必要があります(サードパーティのDLLがVisual Studioランタイムを静的にリンクしているようです)。
tbb.dllにはマニフェストとサイドバイサイドバージョニングが使われておらず、さまざまなコンパイラバージョンに同じ名前が付けられています。最後の手段は、異なるtbb.dllの名前を変更し、名前を変更したdllを参照するためにインポートライブラリまたはインポートをハックすることですが、実際にはこれを避けます。リンカオプションを使用してインポートをリダイレクトする明確な方法はありますか?
これらのDLLはDirectShowフィルタとして機能しているため、Visual StudioランタイムオブジェクトまたはTBBオブジェクトを渡すことはありません。これは明らかに危険です。それらの相互作用は、標準のCOM DirectShow呼び出しを介して相互に呼び出すことに限定されます。