gpt4 book ai didi

c# - 将回调编码到 native dll

转载 作者:行者123 更新时间:2023-12-02 05:08:10 36 4
gpt4 key购买 nike

我正在处理从未管理的 native 库到我的托管 C# 代码的回调。回调函数在头文件中声明:

typedef void* (TNotice)(wchar_t *msg, bool error);

回调有字符串参数 msg。我不知道,为什么在 C# 中声明不起作用:

[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate IntPtr CallbackDelegate([MarshalAs(UnmanagedType.LPWStr)]string msg, bool error);

但是声明:

[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate IntPtr CallbackDelegate([MarshalAs(UnmanagedType.LPWStr)]StringBuilder msg, bool error);

工作正常。

最佳答案

您必须使用StringBuilder,因为参数是out 参数或返回值。在这些情况下,您不能使用常规的 string。您使用的编码是正确的。

关于c# - 将回调编码到 native dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15948680/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com