我目前在Silverlight中使用了一些COM dll,並且遇到了一個奇怪的問題。我創建了兩個正在使用的.NET COM dll,兩者都通過DllImport引用其他dll。他們工作得很好。Silverlight COM路徑問題
然後我添加了第三個COM DLL到項目中。這個也通過DllImport引用其他dll。一旦我創造了另外兩個休息時間。他們會拋出錯誤,指出他們正在使用的其他dll無法找到。然而,第三個DLL工作正常。
這是我如何創建它們
AutomationFactory.CreateObject("Com1");
AutomationFactory.CreateObject("Com2");
AutomationFactory.CreateObject("Com3");
再次,如果我只是使用COM1和COM2他們的工作完全正常。如果我添加Com3,它可以正常工作,但其他兩個不能找到它們的本地dll。
我甚至沒有在Com3上調用任何函數,只是創建它,其他人停止工作。
任何想法?你認爲這可能是本地的dll嗎?我不明白第三者如何工作,但其他人不這樣做,你會認爲他們會停止工作,如果這是本地的dll破壞某些東西。
你在做什麼來確保可以找到這些本機DLL?如果沒有,那麼第三個可以做一些改變Windows使用的搜索策略的事情,包括更改默認工作目錄或更改PATH環境變量。 – 2012-07-12 01:28:24
這就是我在想什麼,但我現在很喜歡COM的東西。我只是將本機dll與註冊的COM dll放在同一個目錄中。這工作得很好,直到第三個COM DLL。我不知道如何用COM對象處理工作目錄。有沒有辦法可以更詳細地瞭解DllImport?我只是試圖給出完整的路徑作爲名稱,它可以找到它。 – thecaptain0220 2012-07-12 01:56:45
我也嘗試刪除System32中的本機DLL,但它仍然無法正常工作。 – thecaptain0220 2012-07-12 02:04:40