工作,我有一個非託管C++/ATL進程內COM對象(Unmanaged.dll),我試圖從一個託管的C#DLL使用(Managed.dll )。不過,我想要使用免費註冊的COM。我把它歸結爲這些步驟:如何獲得免註冊COM的託管/非託管互操作
- 在開發機器上註冊COM對象。進程內服務器必須具有正確註冊的類型庫。
- 添加到C#項目中的COM對象的引用,然後將參考屬性設置爲隔離=真。
這產生了Unmanaged.dll,Managed.dll和Native.Managed.manifest。打開清單,很清楚系統如何使用它以無註冊方式加載COM對象。
這裏是擦。我有一個託管的EXE(Managed.exe),它動態加載Managed.dll來訪問公共類型。我的意思是「動態」,它使用Assembly.LoadFrom(「Managed.dll」)。當Managed.dll內部的代碼嘗試創建COM對象時,它會得到「類未註冊」異常。看起來,當Managed.dll加載時,激活上下文不能正確設置。
是否有一種方式來獲得免費的註冊COM在這種情況下工作嗎?沒有答案
而你得到這個工作?我有一個非常類似的問題:從受管DLL中使用regfree ActiveX,它由nUnit加載和運行,所以我無法真正破解應用程序清單。但ActCtx函數拒絕爲我工作,我可能錯過了一些簡單的... – Spike0xff 2011-08-30 22:23:07