char**
C のベース配列を C# の同等の型に 変換するにはどうすればよいですか?
char**
バッファを取得して適切なデータで埋める関数を持つ DLL があります。
を使用して、C# アプリケーション内でこの DLL を使用しています。DllImport
問題は、そのような関数に対してreturn type
またはを指定する必要があるときに始まります。argument type
C# のどの型が Cchar**
配列と同等ですか?
何をマーシャリングし、どのようにマーシャリングする必要がありますか?
更新:
これは私のdll内にある私のC関数です:
CDLL_API wchar_t** GetResults(wchar_t* word, int* length, int threshold = 9);
そして、これら 2 つの関数は次の関数を呼び出して値を取得します。
wchar_t** xGramManipulator::CGetNextWordsList(const wchar_t* currentWord, int threshold)
{
wstring str(currentWord);
auto result = GetNextWordsList(str, threshold);
return GetCConvertedString(result);
}
wchar_t ** xGramManipulator::GetCConvertedString(vector< wstring> const &input)
{
DisposeBuffers();//deallocates the previously allocated cStringArrayBuffer.
cStringArraybuffer = new wchar_t*[input.size()];
for (int i = 0; i < input.size(); i++)
{
cStringArraybuffer[i] = new wchar_t[input[i].size()+1];
wcscpy_s(cStringArraybuffer[i], input[i].size() + 1, input[i].c_str());
cStringArraySize++;
}
return cStringArraybuffer;
}
私は wchar_T** を使用しましたが、C# 側に違いはないと思いました (C# はデフォルトで Unicode をサポートしているため! 異なる場合は、これにも対処してください)