我在我的 C# 应用程序中使用旧的 C 库(构建为 DLL)。这个库中的一个函数需要FILE*
传递一个(在 ANSI C 中定义)。有什么方法可以在 C# 中为 a和System.IO.File
获取FILE* 句柄?stdout
stderr
或者有什么办法可以解决这个问题,任何想法,提示等......?
提前致谢。
我在我的 C# 应用程序中使用旧的 C 库(构建为 DLL)。这个库中的一个函数需要FILE*
传递一个(在 ANSI C 中定义)。有什么方法可以在 C# 中为 a和System.IO.File
获取FILE* 句柄?stdout
stderr
或者有什么办法可以解决这个问题,任何想法,提示等......?
提前致谢。
我还没有尝试过,但它可能会工作......
System.IO.File.Create()/Open() 将返回一个 FileStream,从那里您可以使用 FileStream.SafeFileHandle,从那里 SafeFileHandle.DangerousGetHandle() 将为您提供本机操作系统 HANDLE。
然后在非托管 C 中,_open_osfhandle() 将获取您的 HANDLE 并返回一个 int 文件描述符。将此传递给 _fdopen(),它将返回一个 FILE*。
一条漫长的路线,有很多不兼容和其他问题的机会。但你可能很幸运!