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);