DLL中的控制台输出窗口

时间:2010-05-03 06:18:47

标签: c++ windows debugging console

我正在尝试将输出从我的DLL重定向到外部控制台窗口,以便于调试。

我被告知AllocConsole,但我无法重现它,即控制台窗口没有出现。

我目前的环境是Visual Studio 2005。

我尝试了以下从互联网上下载的例子,

AllocConsole();
HANDLE han = GetStdHandle(STD_OUTPUT_HANDLE);
WriteConsole(han,"hello",6,new DWORD,0);

但没有任何反应。如果首先可以通过DLL创建控制台窗口,有人可以指出我正确的方向。

提前致谢!

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

加载后,DLL没有什么特别之处,因此对于DLL而言,分配控制台的方式与最初加载它的EXE无关。

话虽如此,一个进程一次只能与一个控制台关联,所以如果已经有一个控制台连接到该进程,那么分配一个新进程就不会做任何事情(我假设你正在检查) AllocConsole的返回值?返回什么?GetLastError返回什么?)

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