2009-03-03 73 views
1

我被告知要在C#中編寫一個必須從非託管C++ dll實例化的對話框。我們在代碼的其他地方通過簡單地向C++項目添加託管C++類,然後從託管C++類調用C#dll來完成此操作。然而,我發現這對我來說並不適用,因爲我必須這樣做。我認爲是因爲C++ dll是一個MFCActiveX項目。只要我在該項目中的任何文件上設置clr,它就不會再正確註冊。當我嘗試註冊時,出現三個錯誤,然後顯示它註冊的消息。但是,當我嘗試使用它時,我得到0x80040111「ClassFactory無法提供請求的類」錯誤。 如果有人有任何想法是什麼問題在這裏,我將不勝感激。我要麼能夠完成這個(首選),要麼證明這是不可能的。從非託管C++ mfc活動x dll啓動C#對話框

感謝

回答

0

我看不到MFCActiveX項目如何阻止您以這種方式創建C#類。除非它不允許添加託管類。

如果你不能讓託管的C++類技巧工作,另一種選擇是使用COM。可以在C#項目中註冊一個工廠作爲COM對象。說給它下面的接口

[ComVisible(true)] 
[Guid("babe87fc-1467-4913-a1d3-47eeedf1afb5")] 
public interface IDialogFactory { 
    void Create(); 
} 

你也必須創建一個支持類。但是,你可以註冊託管程序集並使用COM來訪問它。

+0

謝謝,我現在正在使用該方法工作。非常有用的感謝。 – 2009-03-03 17:45:09

0

現在必須以 「regasm」 註冊它,而不是 「REGSVR32」。

相關問題