Ich entwickle eine App in C ++ / CLI und habe eine csv-Datei zum Schreiben von Bibliotheken in nicht verwaltetem Code, die ich aus dem verwalteten Teil verwenden möchte. So sieht meine Funktion etwa so aus:
%Vor%... aber ich bemühe mich wirklich, mein glänzendes System :: String ^ in etwas kompatibles umzuwandeln. Im Grunde hatte ich gehofft zu rufen, indem ich etwas wie:
%Vor%Wie mcandre erwähnt , Marshal :: StringToHGlobalAnsi () ist korrekt. Aber vergessen Sie nicht, die neu zugewiesene Ressource mit Marshal :: FreeHGlobal zu befreien () , wenn die Zeichenfolge nicht mehr verwendet wird.
Alternativ können Sie die Vorlage msclr :: interop :: marshal_as zum Erstellen der Vorlage verwenden String-Ressource und automatisch freigeben, wenn der Aufruf den Ressourcenbereich verlässt.
In der Übersicht über das Marshalling in C ++ gibt es eine Liste der Typen, die diese Konvertierung benötigen.