У меня есть приложение на C #, которое вызывает собственную DLL.Собственная DLL вызывает AllocConsole для создания новой консоли, а затем WriteConsole для записи в нее.Это нормально работает, когда приложение запускается без отладчика.Но когда он запускается с подключенным управляемым отладчиком Visual Studio, при вызове AllocConsole все равно появляется новое окно консоли, но при вызове WriteConsole в него ничего не записывается.
Может показаться, что отладчик перехватывает консолькоманд и отправки их в VS, но текст не появляется ни в одном окне VS, которое я вижу (Output или Intermediate.) Я могу преднамеренно записывать в окна VS, вызывая OutputDebugString, но я действительно хотел бы иметь возможность писатьна консоль, созданную с помощью AllocConsole, так как я использую функции, подобные SetConsoleCursorPosition, чтобы позволить мне перезаписать текущую строку консоли.На данный момент мой обходной путь - что-то вроде
if(debuggerAttached) OutputDebugString(...) else WriteConsole(...)
, что довольно не элегантно и не дает мне функциональности, которую я хочу.Любые идеи о том, как заставить отладчик VS не перехватывать события консоли C ++?Эта проблема не возникает, когда я нахожусь в чисто родной среде.