在调试LibOpenBLT的dll库时,发现错误但是无法调试的时候,可以在dll中打印log到console
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);
}
如果有报vsprintf无法链接错误,需要加入legacy_stdio_definitions.lib库,参考:
(78条消息) 【错误】LNK2019: 无法解析的外部符号 _sscanf / _vsprintf,该符号在函数中被引用写自定义目录标题_爱吃胡椒的喵酱的博客-优快云博客
解决方案:
1.打开项目属性 - 链接器 - 输入 - 附加依赖项
2.右键编辑 - 添加代码
legacy_stdio_definitions.lib