C#中如何继承C++/CLI接口?
我已经在 C++/CLI 中声明了一个接口并将其设为程序集(DLL)。我希望该接口由 C# 应用程序实现。我已添加引用,但我的 C# 程序集未检测到我的 C++/CLI 接口,并显示“无法找到:您缺少一些程序集引用。”
我该如何解决这个问题?
I have declared an interface in C++/CLI and made it an assembly(DLL). I want that interface to be implement by a C# app. I have added the reference but my C# assembly does not detecting my C++/CLI interface and says "Could not find: You are missing some assembly refernce."
How can I resolve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
确保您的 dll 支持 CLR。 (Visual Studio 中“配置属性”中的“常规”选项卡)。
Make sure that your dll support CLR. (Tab General in Configuration Properties in Visual Studio).
知道这是一个老问题,但我也遇到了同样的问题。
此外,您的 c++/cli 需要提供一些源 (cpp) 代码(实际上几乎是空的):
IXYprovider.h:
namespace Interfaces
{
公共接口类IXYprovider
{
...
}
}
IXYProvider.cpp:
#include "IXYprovider.h"
命名空间接口
{
。
这使得它对 C# 可见
Knowing this is an old question, but I had the same issue.
Additionally, your c++/cli needs to provide some source (cpp) code (which is actually nearly empty):
IXYprovider.h:
namespace Interfaces
{
public interface class IXYprovider
{
...
}
}
IXYProvider.cpp:
#include "IXYprovider.h"
namespace Interfaces
{
}
That makes it visible to C#.
确保在 C++/CLI 程序集中将
接口类
声明为public
。我推荐使用 Red Gate .NET Reflector 的免费版本来查看已编译程序集中类型的可见性。Make sure that the
interface class
is declaredpublic
in the C++/CLI assembly. I recommend the free version of Red Gate .NET Reflector for viewing visibility of types in a compiled assembly.接口是否在 C++/CLI 程序集中的命名空间内定义?如果是这样,您是否将“using [namespace]”放在 C# 文件的顶部?
Is the interface defined within a namespace within the C++/CLI assembly? If so have you put 'using [namespace]' at the top of your C# file?