2

C#アプリケーション内で古いCライブラリ(DLLとして構築)を使用しています。このライブラリの関数の1つは、FILE*(ANSI Cで定義されているように)渡される必要があります。System.IO.FilestdoutおよびのFILE *ハンドルをC#で取得する方法はありstderrますか?

または、この問題、アイデア、ヒントなどを回避する方法はありますか?

前もって感謝します。

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 に答える