2014-03-03 24 views
-1

我已經在C#中創建了一個COM DLL。 在這個DLL中我鏈接到第三方DLL(「thirdpartydll.dll」)。 當我在編譯期間將「thirdpartydll.dll」輸出到Release文件夾中時,所有工作都正常。我的DLL應該動態使用另一個DLL

但我不想分發「thirdpartydll.dll」與我的DLL。 我想我的DLL使用可能(或可能不)已經由第三方註冊的「thirdpartydll.dll」。

例如,如果第三方將「thirdpartydll.dll」安裝到C:\ Program Files(x86)\ Third Party \ thirdpartydll.dll,那麼我的COM DLL應該使用這個。

目前這不起作用。我得到了自動錯誤80070002.我想這意味着我的COM DLL找不到「thirdpartydll.dll」。我不知道爲什麼。我以爲我的COM DLL會自動找到它。

+0

您是否希望能夠動態檢查此dll是否在GAC中,並據此採取行動?因爲這是可行的,但[凌亂](http://stackoverflow.com/questions/19456547/how-to-programmatically-determine-if-net-assembly-is-installed-in-gac) - 編輯:我誤解你的第三這個dll需要它的路徑不同。 –

+0

不,這沒有幫助。 – tmighty

回答

0

如果您不想在目標系統上安裝(非COM)thirdparty.dll的位置,必須將其安裝到全局程序集緩存(GAC)中。

+0

我用C++編寫了相同的類,使用DLL的.tlb文件,它工作。該DLL是動態發現的。所以我想我只是在C#中做錯了什麼。第三方.ydll.dll不在GAC中。 – tmighty