2

我在我的 C# 应用程序中使用旧的 C 库(构建为 DLL)。这个库中的一个函数需要FILE*传递一个(在 ANSI C 中定义)。有什么方法可以在 C# 中为 a和System.IO.File获取FILE* 句柄?stdoutstderr

或者有什么办法可以解决这个问题,任何想法,提示等......?

提前致谢。

4

1 回答 1

2

我还没有尝试过,但它可能会工作......

System.IO.File.Create()/Open() 将返回一个 FileStream,从那里您可以使用 FileStream.SafeFileHandle,从那里 SafeFileHandle.DangerousGetHandle() 将为您提供本机操作系统 HANDLE。

然后在非托管 C 中,_open_osfhandle() 将获取您的 HANDLE 并返回一个 int 文件描述符。将此传递给 _fdopen(),它将返回一个 FILE*。

一条漫长的路线,有很多不兼容和其他问题的机会。但你可能很幸运!

于 2011-03-22T21:51:49.550 回答