私は VS2008 でビルドされた Win32 プログラムを持っているので、私のコードは MSVCR90.DLL と MSVCP90.DLL にリンクされています。ただし、VS2005 でビルドされた DLL (私は変更できません) でコードを実行しており、その DLL のコードが clog ストリームに出力されると、MSVCR80.DLL および MSVCP80.DLL を介して実行されます。問題は次のとおりです。コードで std::clog を再ルーティングすると、crt 9.0 ライブラリに対してビルドされたコードにのみ影響し、古い crt 8.0 を使用するコードでは出力が再ルーティングされません。古い CRT に対してビルドされた DLL で clog ストリームを再ルーティングする方法はありますか?
古い CRT DLL での GetModuleHandle() と GetProcAddress() の呼び出しを調査し、(_open_osfhandle と _dup2 を介して) C stderr ストリームを再ルーティングすることに成功しましたが、C++ の詰まりストリームはまだ影響を受けていないようです。古い CRT ライブラリで ios_base::sync_with_stdio() も呼び出す必要があると思いますが、その関数への有効なアドレスを取得できませんでした。どんな助けでも大歓迎です。
ありがとう。