【问题标题】:Marshal C++ wchar_t** in C#在 C# 中元帅 C++ wchar_t**
【发布时间】:2014-08-11 14:47:01
【问题描述】:

在 C++ 库代码中我有:

bool __stdcall functionName(const wchar_t** fileNames)

在我的 C# 程序中,这个函数必须得到一个字符串数组(文件名)。 如何在 C# 中调用它? 谢谢!

【问题讨论】:

  • 您是否尝试使用带有string[] 参数的P/Invoke?以及如何传递数组的大小?
  • @LucasTrzesniewski 是的,我试试。我收到有关不平衡堆栈的错误消息。该函数还有另一个参数“size_t namesCount”,它传递数组的大小。我只是试图简化问题:)

标签: c# c++ .net marshalling


【解决方案1】:

尝试明确指定编组:

[DllImport("mylibrary.dll", CallingConvention = CallingConvention.StdCall)]
static extern bool functionName(
    [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr)] string[] fileNames,
    int length);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    相关资源
    最近更新 更多