VC6動態庫dll中打印調試信息到控制檯

一般狀況下,動態庫很難調試,尤爲是要打印輸出到控制檯上,不少新的開發平臺好比VS2010或QT卻是能夠打印動態庫內容到控制檯,但我發現VC6編寫的動態仍是不能夠。使用這個函數,能夠將VC6編寫的動態庫調試信息打印到控制檯,即便在Release模式下,也能建立一個控制檯窗口用於信息輸出。ios

#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);
}
相關文章
相關標籤/搜索