wireshark中包含的头文件不存在,是怎么回事?

时间:2021-12-31 11:34:44
wireshark 的源代码dtd_parse.c文件中有一行头文件包含语句#include "dtd_grammar.h",但在整个源代码的目录下都没有dtd_grammar.h这个文件,而编译却可以通过,请问高手是怎么回事?

6 个解决方案

#1


那么dtd_grammar.h就是在搜索路径中。

引用 楼主 phis4 的回复:
wireshark 的源代码dtd_parse.c文件中有一行头文件包含语句#include "dtd_grammar.h",但在整个源代码的目录下都没有dtd_grammar.h这个文件,而编译却可以通过,请问高手是怎么回事?

#2


不了解wireshark源代码。
除了楼上说的可能性,还有可能就是编译过程动态产生了 dtd_grammar.h 这个头文件,编译完成后又删除了该文件。

#3


包含是以 "" 引用, 而不是<>引用,应该是源码目录下吧,回头把整个硬盘搜一下, 看有没有这个文件。
楼上说的动态生成是怎么回事呢? 源码目录下倒是有 dtd_grammar.lemon 的脚本,难道要学这个脚本语言先?

#4


引用 3 楼 phis4 的回复:
包含是以 "" 引用, 而不是<>引用,应该是源码目录下吧,回头把整个硬盘搜一下, 看有没有这个文件。
楼上说的动态生成是怎么回事呢? 源码目录下倒是有 dtd_grammar.lemon 的脚本,难道要学这个脚本语言先?


有可能是 Lex + Yacc(Linux) 或者 Flex + Bison 之类的工具,又或者编程者自己定义的工具将
dtd_grammar.lemon 转换成 dtd_grammar.h 文件。

有个建议:
如果你使用Linux或者MSys,MinGW的话,可以查找下Makefile之类的文件,看哪个地方有对 dtd_grammar.lemon 进行处理;
如果使用Windows的话,通常应该有VC工程,可查看工程配置:
Properties -> Build Events -> ...
如果文件 dtd_grammar.lemon 被加到工程里的话,可以在VC Solution Explorer中选中该文件,
然后右键 Properties -> General -> Tool 查看是否有外部工具对该文件进行处理。

#5


引用 3 楼 phis4 的回复:
包含是以 "" 引用, 而不是<>引用,应该是源码目录下吧,回头把整个硬盘搜一下, 看有没有这个文件。
楼上说的动态生成是怎么回事呢? 源码目录下倒是有 dtd_grammar.lemon 的脚本,难道要学这个脚本语言先?

看看里面的readme文件,
如果不是在当前代码目录下,可能就是动态生成的!需要执行某个脚本!

#6


根据网上的教程,在VS下编译成功wireshark后,确实生成了这个文件,多谢了

#1


那么dtd_grammar.h就是在搜索路径中。

引用 楼主 phis4 的回复:
wireshark 的源代码dtd_parse.c文件中有一行头文件包含语句#include "dtd_grammar.h",但在整个源代码的目录下都没有dtd_grammar.h这个文件,而编译却可以通过,请问高手是怎么回事?

#2


不了解wireshark源代码。
除了楼上说的可能性,还有可能就是编译过程动态产生了 dtd_grammar.h 这个头文件,编译完成后又删除了该文件。

#3


包含是以 "" 引用, 而不是<>引用,应该是源码目录下吧,回头把整个硬盘搜一下, 看有没有这个文件。
楼上说的动态生成是怎么回事呢? 源码目录下倒是有 dtd_grammar.lemon 的脚本,难道要学这个脚本语言先?

#4


引用 3 楼 phis4 的回复:
包含是以 "" 引用, 而不是<>引用,应该是源码目录下吧,回头把整个硬盘搜一下, 看有没有这个文件。
楼上说的动态生成是怎么回事呢? 源码目录下倒是有 dtd_grammar.lemon 的脚本,难道要学这个脚本语言先?


有可能是 Lex + Yacc(Linux) 或者 Flex + Bison 之类的工具,又或者编程者自己定义的工具将
dtd_grammar.lemon 转换成 dtd_grammar.h 文件。

有个建议:
如果你使用Linux或者MSys,MinGW的话,可以查找下Makefile之类的文件,看哪个地方有对 dtd_grammar.lemon 进行处理;
如果使用Windows的话,通常应该有VC工程,可查看工程配置:
Properties -> Build Events -> ...
如果文件 dtd_grammar.lemon 被加到工程里的话,可以在VC Solution Explorer中选中该文件,
然后右键 Properties -> General -> Tool 查看是否有外部工具对该文件进行处理。

#5


引用 3 楼 phis4 的回复:
包含是以 "" 引用, 而不是<>引用,应该是源码目录下吧,回头把整个硬盘搜一下, 看有没有这个文件。
楼上说的动态生成是怎么回事呢? 源码目录下倒是有 dtd_grammar.lemon 的脚本,难道要学这个脚本语言先?

看看里面的readme文件,
如果不是在当前代码目录下,可能就是动态生成的!需要执行某个脚本!

#6


根据网上的教程,在VS下编译成功wireshark后,确实生成了这个文件,多谢了