我有以下代码:
[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),我得到了分段错误.
有什么建议?