Ich habe eine C++ - Bibliotheksmethode, die ich aus einem Unity C# -Skript aufrufen möchte.Weitergabe eines Bytearrays aus Unity C# in eine C++ - Bibliotheksmethode
Ich verstehe, dass es drei wichtige Schritte gibt. Zuerst, um die C++ - Methoden zu extern "C"
zu deklarieren. Zweitens, um vor der entsprechenden C# extern Methodendeklaration zu verwenden. Drittens, um die Bibliotheksdatei mit dem Präfix lib (z. B. libfoobar.so
) zu benennen und sie in den Unity-Plugins-Ordner zu platzieren.
So weit so gut - wenn ich nur einfache Parametertypen wie int
von C# in C++ übergebe. Um jedoch einen byte[]
Parameter zu übergeben, muss ich die verschiedenen Möglichkeiten berücksichtigen, wie C# und C++ Speicher und Zeiger handhaben. Ich konnte kein definitives Beispiel dafür finden, wie dies zu tun ist.
Meine Frage: Wie übergibt man ein byte[]
von einem Unity C# -Skript in eine externe C++ - Bibliotheksmethode?
Ist das die P/Invoke-Methode? Sie können auch C++ CLI verwenden. Ich habe gehört, dass C++ CLI Ihnen mehr Kontrolle gibt. Aber ich habe es noch nie gemacht. Nimm es mit einem Körnchen Salz. –
Vergessen Sie 'CallingConvention = CallingConvention.Cdecl' nicht aus Ihrem DllImport, da Sie' extern "C" ' – cubrr
@Golazo verwenden - P/Invoke nicht verwenden, einfach C++ extern als 'extern' deklarieren und ' referenzieren von C# über das Attribut 'DllImport'. Es wird kein P/Invoke benötigt, zumindest um einfache Parametertypen nicht zu übergeben. – Ghopper21