小编Ilo*_*ari的帖子

Marshal a va_list

我有以下代码:

[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void PanicFuncDelegate(string str, IntPtr args);

private void PanicFunc(string str, IntPtr args)
{
    LogFunc("PANIC", str, args);
}

public void LogFunc(string severity, string str, IntPtr args)
{
    vprintf($"[{severity}] "+ str,args);
}

[DllImport("libc.so.6")]
private static extern int vprintf(string format, IntPtr args);
Run Code Online (Sandbox Code Playgroud)

这会将正确格式化的消息打印到控制台.我想从args中检索值,以便在我自己的记录器中使用它们.

如果我试图从args中的数组中获取每个指针的值(如此处所示:C#delegate中的Marshal va_list),我得到了分段错误.

有什么建议?

c# dllimport .net-core

11
推荐指数
1
解决办法
253
查看次数

标签 统计

.net-core ×1

c# ×1

dllimport ×1