Ich habe eine Funktion, die in C++ mit folgendem Header geschrieben ist:
void EncodeFromBufferIN(void* bufferIN, int bufferINSize, unsigned char* &bufferOUT, int &bufferOUTSize);
Ich habe die .h- und .cpp-Dateien so bearbeitet, dass ich die Funktion durch das Importieren der DLL in C# aufrufen kann:
**EncodeFromBufferIN.h**
extern "C" {
__declspec(dllexport) void EncodeFromBufferIN(void* bufferIN, int bufferINSize, unsigned char* &bufferOUT, int &bufferOUTSize);
}
**EncodeFromBufferIN.cpp**
extern void EncodeFromBufferIN(void* bufferIN, int bufferINSize, unsigned char* &bufferOUT, int &bufferOUTSize){
// stuff to be done
}
Aber jetzt ist mein Problem, dass ich nicht weiß, wie ich die Funktion in C# aufrufen soll. Ich habe den folgenden Code in C# hinzugefügt, bin mir aber nicht sicher, wie ich die Parameter an die Funktion übergeben soll.
[DllImport("QASEncoder.dll")]
unsafe public static extern void EncodeFromBufferIN(void* bufferIN, int bufferINSize, out char[] bufferOUT, out int bufferOUTSize);
Der bufferIN und bufferOUT sollten Strings sein, aber wenn ich die Funktion so aufrufe:
public string prepareJointsForQAS()
{
string bufferIN = "0 0 0 0 0";
char[] bufferOUT;
int bufferOUTSize;
EncodeFromBufferIN(bufferIN, bufferIN.Length, bufferOUT, bufferOUTSize);
}
Bekomme ich diesen Fehler: "Die besten überladenen Methoden für ... haben einige ungültige Argumente". Wie sollten also die Parameter übergeben werden?