Übergabe einer Zeichenfolge von C# an eine C++-DLL
-
Ich habe eine C++-Klassenbibliothek(DLL) zu schreiben, die von C#-Anwendungen aufgerufen werden soll.
Bei VS 2005 habe ich die Projekt-Eigenschaft Common Language Runtime-Unterstützung (/clr) gesetzt.public ref class CCIOCard : public ICIODriver { UINT OpenContext(char* pszDriverName ); … }
Nach dem Einbinden in den C#-Treiber unter Verweise erhält die Methode dort eine Signatur mit einem sbyte* Parameter.
Leider habe ich keine Möglichkeiten gefunden, eine literale Zeichenfolge zu übergeben.static void Main(string[] args) { sbyte[] driverName = new sbyte[6]; string sdriverName = "ABCDEF"; // Kopierroutine ??? CCIOCard MyCard = new CCIOCard(); UInt32 hndDriver = MyCard.OpenContext(??? driverName ???); … }
Für C# ist der Datentyp sbyte[] nicht mit sbyte* kompatibel.
Gibt es hier eine einfache Lösung?
Ich habe beide Seiten in der Hand.
Tom
-
Übergib statt dem char* einen System::String ^.
Dann kannst von C# aus direkt eine Zeichenkette übergeben.Wie man dann von System::String nach char * kommt,
ist hier glaub ich schon öfter gestanden.
-
Jup, gibts nen FAQ Beitrag:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-158664.html
-
Dank an beide.
Tom