Die DLL ist in C ++ geschrieben und sendet Text als utf8 über einen const char*
Callback.
Erstens, ist dies der richtige Weg, um den Rückruf zu deklarieren?
%Vor%Nativer Rückruf:
%Vor%Wenn ja, wie gehe ich mit dem utf8-Text um, sobald er ankommt?
Ich sende es an eine RichTextBox und die utf8-Zeichen kommen als Müll heraus (die, die zufälligerweise ascii print sind).
Danke euch allen.
ANTWORT
In den Kommentaren unten lieferte TheUndeadFish einen Link mit einer Antwort, die funktioniert. Es wird auch bis zu einem gewissen Grad erklärt. Interessierte sollten einen Blick darauf werfen. Ich repliziere nur die Antwort hier, wie es für den Code gilt, den ich gepostet habe.
Nur diese Änderung ist erforderlich:
%Vor%Der Delegat interpretiert den Zeiger "inte" (zeigt auf eine utf8-Zeichenfolge aus der C ++ - DLL) wie folgt neu:
%Vor%Sie sollten CharSet.Unicode verwenden (wenn die Zeichenfolge ein wchar * ist, 2 Bytes pro Zeichen) oder CharSet.Ansi (wenn die Zeichenfolge 1 Byte pro Zeichen ist).
Da Ihre Zeichenfolge in UTF8 ist, sollten Sie von Hand konvertieren. Keine der Standardkonvertierungen passt zu Ihrem Problem.