解决在MFC中使用Easylogging++导致TRACE未定义错误

今天用MFC创建一个对话框程序并使用Easylogging++做日志输出,当程序中用TRACE打印信息时候,编译时候会报“error C3861: “TRACE”: 找不到标识符”,TRACE是MFC的宏,怎么可能出现这样的错误?经过反复注释代码发现是包含Easylogging++后才会出现这个错误,那么Easylogging做了什么?直接去看它的源码发现有这么写的

// Undef levels to support LOG(LEVEL)
#undef INFO
#undef WARNING
#undef DEBUG
#undef ERROR
#undef FATAL
#undef TRACE
#undef VERBOSE

看,它为了支持LOG级别,把这么多宏全部取消定义了。我们就剩下两条路了,要么改它的源码,要么不要用TRACE。

在afx.h中TRACE是这么定义的

// extern ATL::CTrace TRACE;
#define TRACE ATLTRACE
所以最简单就是不用TRACE,改用ATLTRACE。

当然也可以自己写个XXTRACE:

#ifdef _DEBUG
#ifndef XXTRACE
#define XXTRACE XX_Trace
#endif
void XX_Trace(LPCTSTR pstrFormat, …) { #ifdef _DEBUG TCHAR szBuffer[300] = { 0 }; va_list args; va_start(args, pstrFormat); ::wvnsprintf(szBuffer, lengthof(szBuffer) - 2, pstrFormat, args); _tcscat(szBuffer, _T("\n")); va_end(args); ::OutputDebugString(szBuffer); #endif }

解决在MFC中使用Easylogging++导致TRACE未定义错误今天用MFC创建一个对话框程序并使用Easylogging++做日志输出,当程序中用TRACE打印信息时候,编译时候会报“error C3861: “TRACE”: 找不到标识符”,TRACE是MFC的宏,怎么可能出现这样的错误?经过反复注释代码发现是包含Easylogging++后才会出现这个错误,那么Easylogging做了什么?直接去看它的源码发现有这么写的// Undef levels to support LOG(LEVEL 我想用 TRACE 宏输出调试信息,但在调试一个Win 32 dll时出现这个 错误 。程序已经#include 了。这个问题怎么 解决 呢?   编译平台: VS 2005, Win XP sp2. ------ 解决 方案-------------------- TRACE MFC 的定义,在win32代码 可以直接用OutputDebugString来达到相同效 el::Configurations conf; //el::Configurations conf("E:\\github\\c-\\faceDetect\\Release\\ log .conf"); //el::Configurations conf(" log .conf"); //el:: Log gers::rec...
功能:仅把vs2017当成单纯的代码编辑器,因为环境复杂,vs2017检测到 未定义 标识符 错误 等提示,怎么关闭呢? 解决 :工具 > 选项 > 文本编辑器 >C/ C++ > 高级 > 把Intellisense 的禁用全部改为true
前几天从网上下了个图像分析的 mfc 小程序,是VC6的 用VC6在本地编译生成都没问题,运行起来弹出一个未处理的 错误 ,程序崩溃退出。 想起来原来遇到过打开文件对话框方面的问题,当时项目时间紧张未能深究。 这次要好好看下这个问题。 具体做法就是深入细致的跟踪、跟踪、跟踪。。。 应用代码,跟进 MFC 的代码,跟进 Alt+8调出反汇编,跟进。。。 反复多次重复追踪、缩小目标,确定问题是:
我们大多数开发都需要一边输出数据,一边开出界面。 很多时候窗口应用开出就关闭了控制台,有些环境需要自行配置两者同时显示。 断点操作查看数据是必须的,但是有的时候还是想念printf,cout,OutputDebugString这些简易输出某些数据。 下面直接介绍打印数据到VS2019的输出窗口 TRACE MFC 用于打印的输出,...
问题引入:在windows驱动开发过程 ,我们一般会用VS2015+WDK10,新建一个KMDF工程(非empty)。该过程可参考我的另一篇博客:点击打开链接。这个工程新建好了,并能编译通过,但有时我们需要在该工程 新增source文件。通过在VS “添加现有项"或”新增加项“的方式添加一个或几个新的源文件到工程 。然后再编译,会报错”error C4013: “ Trace Events” 未定义
你好!根据你提供的信息,我理解你的问题是在函数'_start' ,出现了 错误 提示:(.text+0x20): 对'main' 未定义 的引用。 这个 错误 提示意味着在程序 ,有一处地方调用了'main'函数,但是编译器无法找到'main'函数的定义。这通常发生在以下几种情况下: 1. 你的代码 没有定义'main'函数,或者'main'函数定义存在问题, 导致 编译器无法识别它。 2. 在编译时,你没有将所有需要的源文件都包含在编译命令 导致 编译器无法找到'main'函数的定义。 3. 你的代码 调用了一个其他源文件 定义的'main'函数,但是在编译时没有将该源文件包含在编译命令 导致 编译器无法找到'main'函数的定义。 为了 解决 这个问题,你需要检查你的代码 是否定义了'main'函数,并确保在编译时将所有需要的源文件都包含在编译命令 。如果你确认代码 确实没有定义'main'函数,那么你需要创建一个'main'函数来作为程序的入口点。 希望这个回答能够帮到你!如果你还有其他问题,请随时问我。