[c#] Call C ++ Funktion in C # von DLL - seltsame Parameter



Answers

Ein paar Korrekturen, die für mich funktionierten:

        string inStr = "Value to pass";
        int inSize = inStr.Length;
        StringBuilder outStr = new StringBuilder(255);
        int outSize = 255;

        EncodeFromBufferIN(inStr, inSize, outStr, ref outSize);

Grüße.

Question

Ich habe eine Funktion geschrieben in C ++ mit dem nächsten Header:

void EncodeFromBufferIN(void* bufferIN,int bufferINSize, unsigned char*  &bufferOUT, int &bufferOUTSize);

Ich habe die .h und .cpp Dateien wie folgt bearbeitet, um die Funktion durch Importieren der DLL in C # aufrufen zu können:

**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 man die Funktion in C # aufruft. Ich habe den nächsten Code in C # hinzugefügt, bin mir aber nicht sicher, wie die Parameter an die Funktion übergeben werden sollen.

[DllImport("QASEncoder.dll")]
        unsafe public static extern void EncodeFromBufferIN(void* bufferIN, int bufferINSize, out char[] bufferOUT, out int bufferOUTSize);

Die 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);
}

Ich erhalte diesen Fehler: "Die beste überladene Methodenmatrix für ... hat einige ungültige Argumente". Wie also sollten die Parameter übergeben werden?




Links



Tags

c# c#   c++ c++   dll   com