从C#访问C全局变量'errno'

joe*_*moe 9 c c# mono pinvoke errno

P/Invoking时是否可以在C#中访问"errno"变量?这类似于Win32 GetLastError().

Jas*_*aty 8

我很确定有办法,但这可能是一个坏主意.您如何保证运行时在其内部处理过程中没有调用某些CRT函数errno

出于同样的原因,你也不应该GetLastError直接打电话.在DllImportAttribute提供了SetLastError这样的运行时知道要立即抓住最后一个错误,并将其存储在托管代码可以读取使用的地方特性Marshal.GetLastWin32Error.

我认为在这种情况下你能做的最强大的事情就是制作一个C DLL来执行实际的C工作和捕获errno.(请注意,只是围绕errno捕获编写包装器仍然会有上述问题.)