You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于wireshark-nfc示例编译Wireshark插件版本不兼容报错如何解决

Wireshark NFC插件版本不兼容问题排查与解决

根因定位

你当前的代码混淆了插件自身版本和Wireshark依赖版本的宏定义,手动硬编码的WIRESHARK_VERSION_MAJOR、WIRESHARK_VERSION_MINOR值和你本地运行的Wireshark版本不匹配,触发了插件加载时的版本校验规则,才会弹出如下错误:

插件'nfc-wireshark.so'是为Wireshark 3.3版本编译的

排查步骤

  • 执行命令wireshark -v确认本地运行的Wireshark完整版本号,记录主版本、次版本、微版本三个字段
  • 检查编译环境安装的Wireshark开发包版本,确认和运行的Wireshark版本完全一致,否则会出现编译时版本和运行时版本不匹配的问题

修复方案

  1. 删除代码中错误的版本宏定义,原有三行硬编码的版本宏全部删掉:
// 删掉以下3行
#define VERSION "0.8.0"
#define WIRESHARK_VERSION_MAJOR "0.8.0"
#define WIRESHARK_VERSION_MINOR "0.8.0"
  1. 引入Wireshark官方头文件的版本宏,区分插件自身版本和依赖的Wireshark版本:
// 新增Wireshark版本头文件引用
#include <wireshark/version.h>
// 单独定义插件自身的版本号,不要和Wireshark版本宏混用
#define PLUGIN_VERSION "0.8.0"

#ifndef ENABLE_STATIC
// 插件自身版本用自定义的PLUGIN_VERSION
G_MODULE_EXPORT const gchar plugin_version[] = PLUGIN_VERSION;
// Wireshark兼容性校验的版本直接用头文件自带的宏,不要手动写死
G_MODULE_EXPORT const gchar plugin_want_major[] = VERSION_MAJOR;
G_MODULE_EXPORT const gchar plugin_want_minor[] = VERSION_MINOR;
// 3.0以上版本的Wireshark还需要补充微版本校验,新增下面一行
G_MODULE_EXPORT const gchar plugin_want_micro[] = VERSION_MICRO;

// 后续的插件注册逻辑保持不变即可
G_MODULE_EXPORT void plugin_register(void) {
  extern void proto_register_llcp(void);
  extern void proto_register_snep(void);
  extern void proto_register_ndef(void);
  proto_register_llcp();
  proto_register_ndef();
  proto_register_snep();
}

G_MODULE_EXPORT void plugin_reg_handoff(void) {
  extern void proto_reg_handoff_llcp(void);
  extern void proto_reg_handoff_snep(void);
  extern void proto_reg_handoff_ndep(void);
  proto_reg_handoff_llcp();
  proto_reg_handoff_snep();
  proto_reg_handoff_ndef();
}
#endif
  1. 重新编译插件后重新加载到Wireshark即可解决版本不兼容问题。

内容的提问来源于stack exchange,提问作者Felix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:57:03