C++ DLL中的控制台输出窗口

C++ DLL中的控制台输出窗口,c++,windows,debugging,console,C++,Windows,Debugging,Console,我试图将输出从DLL重定向到外部控制台窗口,以便于调试 我被告知AllocConsole,但我无法复制它,即控制台窗口不会出现 我当前的环境是VisualStudio2005 我尝试了下面的例子,是从互联网上获得的 AllocConsole(); HANDLE han = GetStdHandle(STD_OUTPUT_HANDLE); WriteConsole(han,"hello",6,new DWORD,0); 但什么也没发生。如果一开始可以通过DLL创建控制台窗口,有人能给我指出正确的

我试图将输出从DLL重定向到外部控制台窗口,以便于调试

我被告知AllocConsole,但我无法复制它,即控制台窗口不会出现

我当前的环境是VisualStudio2005

我尝试了下面的例子,是从互联网上获得的

AllocConsole();
HANDLE han = GetStdHandle(STD_OUTPUT_HANDLE);
WriteConsole(han,"hello",6,new DWORD,0);
但什么也没发生。如果一开始可以通过DLL创建控制台窗口,有人能给我指出正确的方向吗


提前谢谢

一旦加载,DLL就没有什么特别之处,因此,对于DLL,控制台的分配与最初加载它的EXE没有任何不同

话虽如此,一个进程一次只能与一个控制台关联,因此,如果已经有一个控制台连接到该进程,那么分配一个新的控制台将不会起任何作用,我假设您正在检查的返回值是?它的回报是什么?GetLastError返回什么


还有其他一些可能性。例如,如果将DLL加载到服务中,则该服务可能会在与当前登录用户不同的窗口站下运行,因此如果创建控制台窗口,您将无法看到它。

输出调试字符串的正确方法是通过,使用适当的调试工具侦听输出字符串。

,或者把它写进一个文件或什么的。我同意。@Ignacio Vazquez Abrams您推荐哪种调试工具?我没有使用调试工具进行测试的选项/权限,因为应用程序框架托管在另一台服务器上,除了传输DLL插件进行测试外,我无法在该服务器上执行任何安装。请给我一些建议。谢谢@codeka我可以将输出写入文件,但是每次有更改时,我都必须重新打开文件,我希望每秒钟都有实时更改。