问题描述
我有一个在 Linux 中运行的 .net core 3.1 控制台应用程序。应用程序调用驻留在动态链接的共享对象库中的函数,如下所示:
[DllImport("lib/foo.so",CallingConvention = CallingConvention.Cdecl)]
static extern void Foo();
C 函数 Foo()
写入 stderr
,然后在遇到问题时写入 abort()
。当我运行控制台应用程序并出现此类问题时,即使我将它们重定向到文件,我也看不到任何 stderr
消息:
$ dotnet MyProgram.dll 2>errors.txt
文件总是空的,好像 dotnet
“吞下”了 .so
代码中的所有 stderr 消息。
我的问题是 - 如何将 dotnet
消息从我的 stderr
文件中的 C 代码重定向到 stderr、stdout 或文件?我发现 this SO question 有 Windows 的答案。 Linux 有没有类似的解决方案?
PS - 按照上述 SO 问题的另一个答案中的建议,添加 .so
没有任何明显影响。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)