XP 以降、DLL は Windows のサイド バイ サイド キャッシュにインストールされます (または、インストールすることができます) (実際、VS2005 DLL はサイド バイ サイド キャッシュで検出されることを主張し、それ以外の場合は実行を拒否します)。
Windows のサイド バイ サイド キャッシュ (C:\WINDOWS\WINSxS にあります) では、DLL は名前とバージョンで識別されるサブ フォルダーに置かれます。そうすれば、複数のバージョンの DLL を並べてインストールできます。
Visual Studio アプリケーションをコンパイルすると、コンパイラはリンカにマニフェスト ファイルを生成するように指示します。このマニフェスト ファイルは、MT コマンドを使用して実行可能ファイルまたは DLL にリンクできます。
このマニフェスト ファイルには、前に説明したものと同じバージョン番号が含まれており、Windows はこの情報を使用して、実行可能ファイルまたは DLL をロードするときにロードする DLL を見つけます。
あなたの質問では、使用している 2 つのライブラリが DLL か LIB かが明確ではありません。それらが DLL である場合、上記のシステムが使用され、おそらく問題はないでしょう。新しいバージョンのインストールを試みることもできますが、Windows で問題が発生した場合は、古いバージョンも安全にインストールできます。
ただし、LIB を使用している場合は、問題が発生する可能性があります。LIB ごとに使用する DLL を示す方法はありません。実行可能ファイルは、2 つではなく、1 つの DLL (実際には DLL の 1 つのバージョン) のみを参照できます。
この場合にできることは、サイド バイ サイド キャッシュのポリシーを確認することです。これは C:\WINDOWS\WINSxS\Policies にあります)。コンポーネントごとにサブ フォルダがあり、フォルダ内にポリシー ファイルがあります。ポリシー ファイルはリダイレクトを指定できるため、アプリケーションがバージョン X を想定している場合、バージョン Y も許可されているという情報をポリシーに含めることができます。
これは、ポリシー ファイルの例です。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright © 1981-2001 Microsoft Corporation -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32-policy" name="policy.8.0.Microsoft.VC80.ATL" version="8.0.50727.4053" processorArchitecture="amd64 " publicKeyToken="1fc8b3b9a1e18e3b"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.ATL" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b" />
<bindingRedirect oldVersion="8.0.41204.256-8.0.50608.0" newVersion="8.0.50727.4053"/>
<bindingRedirect oldVersion="8.0.50727.42-8.0.50727.4053" newVersion="8.0.50727.4053"/>
</dependentAssembly>
</dependency>
</assembly>
詳細については、MSDN で Side-by-side キャッシュとマニフェスト ファイルの使用方法を確認してください。