0

我编写了一个 C++/CLI 库,它导出一个具有两个通用函数的类:

public ref class TargetInterface
{
public:
    static uint32_t buffer_length = 4096;
    TargetInterface();

    static bool Connect(char* deviceAdress);
    static void Disconnect(char* deviceAdress);

    generic<typename T>CommunicationState WriteProtobufMessage( T object);

    generic<typename T>CommunicationState ReadProtobufMessage([Out] T object);

};

dll编译良好。当我尝试在我的 C# 项目中使用此函数时,我收到错误:

WavelabsLightsourceSystem.TargetInterface.ReadProtobufMessage<T>(T)' is inaccessible due to its protection level

这是我尝试使用 Funktions 的 c# 部分:

       pb_MessageHeader header = new pb_MessageHeader();
       TargetInterface target = new TargetInterface();

       target.ReadProtobufMessage<pb_MessageHeader>(header);
4

2 回答 2

1

根据 Hans Passants 的评论,我不得不CommunicationState公开枚举。

谢谢汉斯,你的水晶球是正确的。我做梦也没想到,我必须公开一个枚举。

于 2013-02-20T10:11:44.333 回答
0

我遇到了同样的问题,但我的问题实际上是由于不同的项目针对不同的 .NET 框架,详见此处:

添加对 MEF 插件项目的引用时,为什么会出现警告图标?

于 2016-01-26T21:40:28.513 回答