質問

C#内からstdout / stderrに出力するサードパーティのネイティブdllの出力をリダイレクトしようとしています。 stdoutとstderrの両方の出力はログファイルに記録されます。

これが私のアイデアです(2つのストリームで2倍):

だから、これはすべて私のコード内でうまく機能しているようです。制御がネイティブDLLに渡されるとすぐに、すべてがstderrに戻ります!必要に応じて、ネイティブDLLをデバッグし、何が問題なのかを確認できますが、...実際にはそうではないので、ハンドルがどのように機能するかを把握するために10時間を費やす前に、誰にもアイデアがありますか?

参照用に、テストコードは http://pastebin.com/f3eda7c8 にあります。興味深いのは、コンストラクターの58〜89行目です。 (もちろん、エラー処理などを後で追加します)。

役に立ちましたか?

解決

私はそれを解決しましたが、解決策は(もちろん)問題とはほとんど関係ありません。 dllはmingwでコンパイルされましたが、MSVCランタイムで使用されるハンドルを尊重していないようです。

コードはそのままにします&他の誰かがこの問題に遭遇した場合の解決策。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top