VC下如何分析头文件引入错误
2008-12-30 09:43
344 查看
问题起因:
在开发易行信息终端软件的过程中,出现一个奇怪的问题:在Win32、WM5平台及Debug、Release四种组合情况下,只有WM5-Debug情况下出现FILETIME未定义错误,查出其定义是在winbase.h中,这个文件一般是通过包含windows.h文件引入的。但为什么没有包含这个文件呢?一开始通过手工追踪,很快就在复杂的包含关系及#define中迷失了方向。
记起在编译选项中有显示包含显示文件(/ShowInclude)的选项,试试看能否解决问题。
分析步骤:
主要分析步骤如下:把/ShowInclude选项打开后,针对出现问题的文件进行单独编译,在编译输出中列出所有相关包含文件(可难会有上千个)。
输出次序就是包含文件的引及次序,文件的包含关系在输出中以空格缩进表示。
把无问题的编译输出与存在问题的编译输出进行差异化比较,除了正常差异外(如因DEBUG而额外引入的文件),针对出现差异的头文件,根据包含关系找到其引入文件。
打开引入文件,分析其#define预处理设定,分析为何出现包含差异。
根据原因进行故障排除。
具体解决情况:
在我的项目中,因为在从wxThread向boost::thread迁移过程中,文件中仍然同时包含了两个库中的头文件,由于wxThread的头文件在前,其中的宏定义影响了boost::thread正确引入windows.h,从而出现前述的错误,调整两个头文件的包含次序后,问题解决。 在四种编译组合下均正常通过。
相关文章推荐
- JSP引入JS文件路径错误原因分析
- 【文本】如何用VC++ 6.0编写查看二进制文件程序分析
- 错误蓝屏死机重启产生的.dmp文件如何打开以及如何分析蓝屏的原因
- android工程中引入第三方JAR包后安装APK时老是提示找不到库文件 || Android如何将程序打成jar包 || 运行java.lang.noclassdeffounderror错误
- 简要分析JM8.6代码中foreman_part_qcif.yuv文件的YUV数据如何悄无声息地进入程序
- 如何在CodeIgniter中引入外部的JS和CSS文件
- 如何在jsp页面中引入css样式表文件和javascript文件
- 如何引入jquery文件
- 如何用vc创建和读取xml文件??
- 如何在web.xml文件中引入其他的xml文件(拆分web.xml)
- Spring如何加载XSD文件(org.xml.sax.SAXParseException: Failed to read schema document错误的解决方法)
- [乐意黎原创] java里classpath在引入编译文件路径时加星号(*)引起的错误
- vc:如何从Internet上有效而稳定地下载文件
- Xcode如何在自己的工程中引入另外一个工程及相关错误的解决办法
- VC对话框如何接受拖拽文件
- android工程中引入第三方JAR包后安装APK时老是提示找不到库文件 || Android如何将程序打成jar包 || 运行java.lang.noclassdeffounderror错误
- VB的ShowInTaskbar功能分析以及用VC的实现 如何隐藏对话框在工具栏上的按钮
- VC中头文件编译错误:fatal error C1010:“unexpected end of file while looking for precompiled header directive"
- Android如何给不同配置机器引入对应的资源文件
- 分析Linux下如何运行一个可执行文件?