0

2 つの汎用関数を持つクラスをエクスポートする 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 Framework がターゲットにされていることが原因でした。

MEF プラグイン プロジェクトへの参照を追加すると、警告アイコンが表示されるのはなぜですか?

于 2016-01-26T21:40:28.513 に答える