如何将 C 中的char**
基于数组转换为 C# 中的等效类型?
我有一个 DLL,它有一个函数,它接受一个char**
缓冲区并用正确的数据填充它。
我在 C# 应用程序中使用这个 DLLDllImport
当我需要为此类功能指定return type
or时,问题就开始了。argument type
C# 中的哪种类型等价于 Cchar**
数组?
我应该编组什么以及如何编组?
更新:
这是我的 C 函数,它位于我的 dll 中:
CDLL_API wchar_t** GetResults(wchar_t* word, int* length, int threshold = 9);
这两个函数调用以下函数来获取它们的值:
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!所以如果它不同,请也解决这个问题)