如何继承C++/C#中的CLI接口?

如何继承C++/C#中的CLI接口?,c#,.net,interface,assemblies,c++-cli,C#,.net,Interface,Assemblies,C++ Cli,我已经在C++/CLI中声明了一个接口,并使其成为程序集(DLL)。我希望该接口由C#应用程序实现。我添加了引用,但我的C#程序集没有检测到我的C++/CLI接口,并说“找不到:您缺少一些程序集引用。” 如何解决此问题?确保在C++/CLI程序集中声明了接口类。我建议使用免费版本的Red Gate.NET Reflector来查看已编译程序集中类型的可见性。接口是在C++/CLI程序集中的命名空间中定义的吗?如果是这样,您是否已将“使用[namespace]”放在C文件的顶部?确保您的dll支持

我已经在C++/CLI中声明了一个接口,并使其成为程序集(DLL)。我希望该接口由C#应用程序实现。我添加了引用,但我的C#程序集没有检测到我的C++/CLI接口,并说“找不到:您缺少一些程序集引用。”


如何解决此问题?

确保在C++/CLI程序集中声明了
接口类
。我建议使用免费版本的Red Gate.NET Reflector来查看已编译程序集中类型的可见性。

接口是在C++/CLI程序集中的命名空间中定义的吗?如果是这样,您是否已将“使用[namespace]”放在C文件的顶部?

确保您的dll支持CLR。(Visual Studio中“配置属性”中的“常规”选项卡)

知道这是个老问题,但我也有同样的问题。 此外,您的c++/cli需要提供一些源代码(cpp)(实际上几乎为空):

IXYprovider.h:

名称空间接口
{
公共接口类IXYprovider
{
...
}
}

IXYProvider.cpp:

#包括“IXYprovider.h”
名称空间接口
{
}


这使它对C#可见。

是的,所有在C++/CLI汇编中声明为公共的东西。因为这是一个interfaceso,所以我只是声明了公共类接口,并没有将其包装在任何名称空间中。我在之后进行了包装,但仍然无法识别其中声明的名称空间和接口。我在C++/CLI程序集中成功地使用了此接口,但在C#.NET Reflector中没有将C++/CLI程序集(在其中声明了接口)显示为引用。但是C++/CLI程序集(哪一个也是实现接口的程序集)正确地将程序集显示为引用。NET framework中的奇怪行为。在声明接口时是否使用了
接口类
关键字?C#只能看到托管类型,而C++/CLI可以看到并使用托管类型和本机类型。它显示相同的错误:“您缺少一些程序集引用…”通过在命名空间中定义接口,添加使用[namespace]并将.dll作为引用程序集,仍然无法看到该接口。也许您可以发布代码?