解决在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'函数来作为程序的入口点。
希望这个回答能够帮到你!如果你还有其他问题,请随时问我。