次のヘッダーを使用してC++で記述された関数があります。
void EncodeFromBufferIN(void* bufferIN,int bufferINSize, unsigned char* &bufferOUT, int &bufferOUTSize);
このように.hファイルと.cppファイルを編集して、C#でDLLをインポートすることで関数を呼び出せるようにしました。
**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
}
しかし、今の私の問題は、C#で関数を呼び出す方法がわからないことです。C#で次のコードを追加しましたが、パラメーターを関数に渡す方法がわかりません。
[DllImport("QASEncoder.dll")]
unsafe public static extern void EncodeFromBufferIN(void* bufferIN, int bufferINSize, out char[] bufferOUT, out int bufferOUTSize);
bufferINとbufferOUTは文字列である必要がありますが、次のような関数を呼び出す場合は次のようになります。
public string prepareJointsForQAS()
{
string bufferIN = "0 0 0 0 0";
char[] bufferOUT;
int bufferOUTSize;
EncodeFromBufferIN(bufferIN, bufferIN.Length, bufferOUT, bufferOUTSize);
}
このエラーが発生します:「...に最適なオーバーロードされたメソッドmatrchにはいくつかの無効な引数があります」。では、パラメータをどのように渡す必要がありますか?