Ho provato diverse cose ma mi sto arrabbiando con Interop.Passare la stringa C# a C++ e passare il risultato C++ (stringa, char * .. qualunque) a C#
(qui la stringa di parole non è riferita a un tipo di variabile ma "una raccolta di caratteri"): Ho una funzione C++ non gestita, definita in una DLL, che sto provando ad accedere da C#, questa funzione ha un parametro stringa e un valore di restituzione stringa come questo:
string myFunction(string inputString)
{
}
Cosa deve essere una stringa in C++? e C# uno? e quali parametri necessitano di DllImport per questo?
Questo è l'approccio corretto. Si noti che non è necessario passare la dimensione del buffer per riferimento. Il C/C++ dovrebbe terminare la stringa, buffer.ToString() produce il valore restituito. –
Grazie a tutti per le risposte. Ho letto da qualche parte che StringBuilder è usato per la stringa di output, ma ho bisogno anche di passare alla funzione C++ una stringa di input .. che tipo dovrei usare? Nel lato C++ ho messo la stringa laterale char * e C#, ma non funziona. Infine, posso definire l'output "string" (lato C++) come const char *? Oppure devo avere un char *? – Smjert
@Smjert: l'uso di un const char * è un buon modo per andare se non lo si cambia. Questo dovrebbe mappare perfettamente con una stringa sul lato C#. Che tipo di problemi vedi? –