SwordMaster Geschrieben 13. Juli 2008 Geschrieben 13. Juli 2008 Hallo Zusammen, Ich habe in den letzten jahren eine kleine Api entwickelt die mir viele Sachen vereinfachen. Das Ganze ist in C++. jetzt möchte ich auf C# umsteigen und vorerst die C++ Api verwenden. Die C++ Api ist ein einer DLL.... Nach dem Vorbild von CodeGuru das ganze in C# verwenden. CodeGuru: Consuming Unmanaged C++ Class Libraries from .NET Clients Leider scheiter ich schon am 1ten Schritt. Ich habe ein C++ Projekt (CLR Projekt) in mein C# Projekt hinzufügt. Das C++ Projekt verwendet den Namespace: "CLibary". Wenn ich jetzt im C# "using CLibary;" sage, kommt der fehler: "The type or namespace name 'CSharpLibary' could not be found (are you missing a using directive or an assembly reference?)" Muss ich da irgendwo im Visual Studio noch was hinzufügen? Ich dachte wenn beide Projekte im Visual Studio geladen sind, sollte das ausreichen? Viele Grüße Stefan P.S. ich verwende Visual Studio 2008 Zitieren
Mephisto81 Geschrieben 13. Juli 2008 Geschrieben 13. Juli 2008 hallo, Ich habe ein C++ Projekt (CLR Projekt) in mein C# Projekt hinzufügt. hast du eine Referenz auf das CLR C++ Projekt zu deinem C# Projekt hinzugefügt? Das alleinige "Hinzufügen" eines Projektes zu einer "Solution" reicht noch nicht aus. Edit: Ist "CSharpLibrary" ein von dir erstellter Namespace? greetz mep Zitieren
SwordMaster Geschrieben 13. Juli 2008 Autor Geschrieben 13. Juli 2008 Hallo Da war wohl ein kleiner fehler in meiner Berichterstattung drinnen. "CSharpLibrary" und "CLibrary" ist das gleiche. Die hatte ich testweise mal umbenannt... Das mit dem Hinzufügen der Referenz hat funktioniert. Ich weiß zwar nicht genau wieso, Aber es geht :uli. Ich liebe dieses Forum. Wo wir grad dabeisind ich hab leider schon das nächste problem. In meiner C++ Klasse ist eine Methode: void Load(char *pfad) { <coding>.... } Wenn ich das in C# aufrufe, verlangt er für den Parameter den Typ "sbyte". Leider kenn ich diesen Typ nicht. Wenn ich also sage: CForeignApiWrapper wrapper = new CForeignApiWrapper(); "<- C++ Klasse wrapper.Load("hallo"); Dann wirft er bei Load eine exception weil er das "Hallo" nicht in sbyte convertieren kann. Aber wieso verlangt er sbyte wenn ich einen String übergeben will? Und wie kann ich meinen String in sbyte convertieren? Vielen Dank und vielen vielen dank für die schnelle antwort Gruss Stefan Zitieren
TDM Geschrieben 21. Juli 2008 Geschrieben 21. Juli 2008 string in c# ist meines wissens nach ein unsigned char* (oder string-object) in c++ Convert.ToChar Method (SByte) (System) dürfte helfen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.