epan 目录中缺少 libwireshark.def

Missing libwireshark.def in epan directory

我已经为 wireshark 创建了一个简单的插件解析器。构建仅针对我编写的解析器给出 LNK2001 错误。常见的解决方案建议将这些函数添加到 epan 文件夹中的 libwireshark.def 文件中。但是,这个文件根本不存在。我应该怎么做才能解决这个问题。

这是给定错误消息的一部分:

'''error LNK2001: 未解析的外部符号__imp_prefs_register_uint_preference 1>数据包-test.obj:错误 LNK2001:无法解析的外部符号 __imp_proto_register_field_array '''

Wireshark 开发人员在几年前改变了这一点。如果您需要调用另一个当前未导出的解析器中的函数,过去的解决方案是将该函数名称添加到 libwireshark.def。现在,您需要做的是编辑声明函数的 .h 文件( 而不是 包含实现的 .c 文件)。将 WS_DLL_PUBLIC 添加到包含您希望插件可用的函数的行的开头。如果还没有,请添加:

#include "ws_symbol_export.h"

接近文件顶部。

此 diff 有一个进行更改的示例:https://code.wireshark.org/review/gitweb?p=wireshark.git;a=blobdiff;f=epan/dissectors/packet-tcp.h;h=2351d9b37648fa0df3ae0c3fff6710b005f2f433;hp=f2e7e92a9171b3cf47b2ace2c845afd39ae2d500;hb=1ebdb2e521ca0cbd7aeebd1c89b8a5cf6a4cc322;hpb=0b8d70bfb715bc3d89b6dfae86fc79d7c4387f02