在 C# 中元帅 C++ wchar_t**
Posted
技术标签:
【中文标题】在 C# 中元帅 C++ wchar_t**【英文标题】:Marshal C++ wchar_t** in C# 【发布时间】:2014-08-11 14:47:01 【问题描述】:在 C++ 库代码中我有:
bool __stdcall functionName(const wchar_t** fileNames)
在我的 C# 程序中,这个函数必须得到一个字符串数组(文件名)。 如何在 C# 中调用它? 谢谢!
【问题讨论】:
您是否尝试使用带有string[]
参数的P/Invoke?以及如何传递数组的大小?
@LucasTrzesniewski 是的,我试试。我收到有关不平衡堆栈的错误消息。该函数还有另一个参数“size_t namesCount”,它传递数组的大小。我只是试图简化问题:)
【参考方案1】:
尝试明确指定编组:
[DllImport("mylibrary.dll", CallingConvention = CallingConvention.StdCall)]
static extern bool functionName(
[MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr)] string[] fileNames,
int length);
【讨论】:
以上是关于在 C# 中元帅 C++ wchar_t**的主要内容,如果未能解决你的问题,请参考以下文章