Ü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.





  • Dank an beide.

    Tom


Anmelden zum Antworten