Voor een project ben ik bezig om een aantal zaken uit te testen. Hetgene wat ik nu aan het uittesten ben is een mogelijkheid verschillende plugins in verschillende talen te ontwikkelen. Het kan dus voorkomen dat een C# plugin gebruikt naast een C++ plugin. Op dit moment ben ik bezig met een C++ plugin die dus een interface implementeert die in een C# project is omschreven. Echter krijg ik de volgende compiler error:
Error 2 error C3766: 'MyFirstMenuItem' must provide an implementation for the interface method 'int Backend::IRootMenuitem::GetItem(void)' ExtensionCreator_2.h 17 ExtensionCreator_2
De ExtensionCreator_2.h omvat de volgende code:
De IRootMenuItem omvat de volgende code:
Zoals te zien is implementeerd de C++ class de vereiste interface. (Ik begrijp dat ik de implementatie in de .cpp bestand moet zetten, maar aangezien ik de foutmelding kreeg heb ik hem voor het testen even in de .h file gezet).
Op internet kan ik niet veel over dit onderwerp vinden, het meerendeel gaat erover hoe een C# of een C++ interface aangemaakt moet worden of hoe van een C++ naar een C# project geport moet worden.
Error 2 error C3766: 'MyFirstMenuItem' must provide an implementation for the interface method 'int Backend::IRootMenuitem::GetItem(void)' ExtensionCreator_2.h 17 ExtensionCreator_2
De ExtensionCreator_2.h omvat de volgende code:
C++:
1
2
3
4
5
6
7
8
| public ref class MyFirstMenuItem : IRootMenuitem { int MyFirstMenuItem::GetItem(void) { return 0; } // TODO: Add your methods for this class here. }; |
De IRootMenuItem omvat de volgende code:
C#:
1
2
3
4
5
6
7
| namespace Backend { public interface IRootMenuitem : IBase { int GetItem(); } } |
Zoals te zien is implementeerd de C++ class de vereiste interface. (Ik begrijp dat ik de implementatie in de .cpp bestand moet zetten, maar aangezien ik de foutmelding kreeg heb ik hem voor het testen even in de .h file gezet).
Op internet kan ik niet veel over dit onderwerp vinden, het meerendeel gaat erover hoe een C# of een C++ interface aangemaakt moet worden of hoe van een C++ naar een C# project geport moet worden.
edit:
Vergeten erbij te vertellen, ik werk in vs2008 en ik heb als C++ project een CLR Class Libary gekozen
Vergeten erbij te vertellen, ik werk in vs2008 en ik heb als C++ project een CLR Class Libary gekozen
[ Voor 4% gewijzigd door ThaStealth op 27-05-2008 16:28 ]
Mess with the best, die like the rest