我有一個調用本機DLL的C#應用程序。本機DLL調用AllocConsole創建一個新的控制檯,然後WriteConsole寫入它。當應用程序在未連接調試器的情況下運行時,此行爲正常工作。但是,當它與Visual Studio的託管調試程序一起運行時,當調用AllocConsole時,仍會彈出新的控制檯窗口,但在調用WriteConsole時不會寫入任何內容。C#調試器攔截來自本地DLL的WriteConsole事件
這似乎是調試器攔截控制檯命令並將它們發送到VS,但文本不會出現在我可以看到的任何VS窗口中(輸出或中級)。我可以故意寫入VS窗口通過調用OutputDebugString,但我真的希望能夠寫入使用AllocConsole創建的控制檯,因爲我使用像SetConsoleCursorPosition這樣的函數來覆蓋當前的控制檯行。目前我的解決方法就像
if(debuggerAttached) OutputDebugString(...) else WriteConsole(...)
這是相當不雅,不給我我想要的功能。關於如何讓VS調試器不攔截C++控制檯事件的任何想法?當我處於純粹的本地環境中時,不會發生此問題。
不幸的是,這似乎沒有任何效果,但我會繼續嘗試。我曾嘗試調用FreeConsole(),以防託管調試器自動將它附加到不同的控制檯,但這也不能解決問題。 –