您的位置:首页 > 其它

VC6动态库dll中打印调试信息到控制台

2017-08-06 00:00 225 查看
通常情况下,动态库很难调试,尤其是要打印输出到控制台上,很多新的开发平台比如VS2010或QT倒是可以打印动态库内容到控制台,但我发现VC6编写的动态还是不可以。使用这个函数,可以将VC6编写的动态库调试信息打印到控制台,即使在Release模式下,也能创建一个控制台窗口用于信息输出。

#include <stdarg.h>
#include <iostream>

int dllPrintf(char *fmt, ...)
{
//不定参数格式化
va_list argptr;
va_start(argptr, fmt);
char buffer[512] = {0};
int cnt = vsprintf(buffer, fmt, argptr);
va_end(argptr);

//创建控制台窗口
static HANDLE gHConsole = INVALID_HANDLE_VALUE;
if (INVALID_HANDLE_VALUE == gHConsole) {
AllocConsole();
gHConsole = GetStdHandle(STD_OUTPUT_HANDLE);
}
//打印到指定的控制台窗口
DWORD dw;
WriteConsole(gHConsole, buffer, strlen(buffer), &dw, NULL);

return(cnt);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: