У меня есть программа Win32, которая построена на VS2008, поэтому мой код связан с MSVCR90.DLL и MSVCP90.DLL. Однако он также выполняет код в DLL (которую я не могу изменить), созданной с помощью VS2005, и когда код в этой DLL печатается в поток засорения, он делает это через MSVCR80.DLL и MSVCP80.DLL. Вот проблема: если я перенаправлю std :: clog в своем коде, я затрону только код, построенный на библиотеках crt 9.0, код, использующий более старую версию crt 8.0, не будет перенаправлен. Так есть ли способ перенаправить поток засорения в DLL, построенной на более старой CRT?
Я исследовал вызовы GetModuleHandle () и GetProcAddress () в старых библиотеках CRT и сумел перенаправить поток C stderr (через _open_osfhandle и _dup2), однако поток C ++ по-прежнему остается незатронутым. Я думаю, что мне также нужно вызвать ios_base :: sync_with_stdio () в более старой библиотеке CRT, но я не смог получить действительный адрес для этой функции. Любая помощь будет принята с благодарностью.
Спасибо.