3 Stimmen

eine Zeichenkette von verwaltetem C# an verwaltetes C++ übergeben

Was ist die bevorzugte Methode zur Übergabe einer Zeichenkette zwischen C++ und C#?

Ich habe eine C++-Klasse, in der eine der Funktionen eine char const * const als Parameter.

wie würde ich diese Funktion in C# aufrufen? gerade mit einem c#- string scheint nicht zu funktionieren, denn die Funktion in C# erfordert eine sbyte*

C++ Klasse:

public ref class MyClass
{
public:
    void Sample(char const * const Name);
}

Fehler 2 Argument '1': kann nicht von 'string' nach 'sbyte*' konvertiert werden

Danke!

4voto

denisenkom Punkte 414

Wenn Sie verwaltetes C++ verwenden, können Sie die Klasse System.String

1voto

Smallgods Punkte 237

Sie müssen versuchen, Ihre Parameter in C# als ein sbyte zu casten.

Sample((sbyte)nameOfParameter);

Das sollte dann gut funktionieren.

1voto

helium Punkte 1069

IMO wäre der beste Weg, einen Wrapper in C++/CLI zu schreiben, der die Marshal::StringToHGlobalAnsi oder etwas Ähnliches, um den System::String^ in einen Char-Zeiger zu konvertieren und dann diesen Wrapper von C# aus aufzurufen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X