2011-11-03 8 views
0

common.dllという別のサードパーティのDLLに依存する、複数のdllを別々のサブディレクトリに置いています。これらのdllを設定して、どこにcommon.dllがあるかを知るようにして、common.dllを他のプログラムに見せて衝突を避けるようにします。例えば別のディレクトリにあるバイナリ間で共通のDLLを共有する

  • FOO/bar.dll
  • FOO /バー/ fubar.dll
  • 共通/ common.dll bar.dllとFUBAR両方と

。 dllはcommon.dllに依存します

私には次の制約があります:

  • 私はDLLを完全に制御していますが、呼び出し可能な実行ファイルを制御できないため、PATHの変更はオプションではありません。
  • それは私がAPIを介してパスを設定するためのDLLのコードを変更する窓
  • で使用される「既知」の場所にcommon.dllをインストールすることはできません7
  • までXPからすべてのWindows上で動作するように持っているではありません望ましい

IOW、私のDLL上のUNIX RPATH + ORIGINが

私はマニフェストを使用して助けることができることを期待していたが、それはWindows XPのためのavailble非常に複雑かに見える理想的な解決策になるようなもの。

答えて

0

私が使用している共通のアプローチは、ファイルの物理的な場所へのシンボリックリンクをいくつかのディレクトリに作成することです。その後、呼び出し側は、あなたが魔法のリンクや窓を入れて、正しいファイルにリダイレクトし、いくつかの「知られているディレクトリ」...

実際のファイルを知っている必要がありc:\blah\common\xxx.dll

リンク:今c:\MyDir\xxx.dll

発信者がすることができます答えをmklink c:\MyDir\xxx.dll c:\blah\common\xxx.dll

+0

おかげで、私は、共通のDLL私をインストールすることはできません。c:\MyDir\xxx.dllを使用すると、彼らはWindows上でc:\blah\common\xxx.dll

構文を取得することですn "known"ディレクトリ。 –

+0

申し訳ありませんが、私は私の答えを改めました - 私の言葉は混乱していました。 –

関連する問題