我被告知要用C#编写一个对话框,该对话框必须从非托管的c ++ dll实例化。我们只需在代码的其他位置执行此操作,只需将托管c ++类添加到C ++项目中,然后从托管c ++类调用C#dll。但是我发现从必须这样做的地方,这对我不起作用。我认为是因为c ++ dll是MFCActiveX项目。一旦我在此项目中的任何文件上设置了clr,它将不再正确注册。当我尝试注册它时,出现三个错误,然后显示一条消息。但是,当我尝试使用它时,出现0x80040111“ ClassFactory无法提供所请求的类”错误。
如果有人有什么问题在这里,我将不胜感激。我要么需要能够做到这一点(首选),要么证明这是不可能的。
谢谢
最佳答案
我看不到MFCActiveX项目将如何阻止您以这种方式创建C#类。除非它根本不允许添加托管类。
如果无法使C ++类托管技巧起作用,另一种选择是使用COM。可以在C#项目中将各种工厂注册为COM对象。说给它下面的界面
[ComVisible(true)]
[Guid("babe87fc-1467-4913-a1d3-47eeedf1afb5")]
public interface IDialogFactory {
void Create();
}
您还必须创建一个支持类。但是随后您可以注册托管程序集并使用COM来访问它。
关于c# - 从非托管C++ MFC Active X DLL启动C#对话框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/606270/