Windows平台上的Wireshark Disscetor错误

时间:2014-01-31 07:16:31

标签: wireshark wireshark-dissector

我正在尝试在Windows平台上为Wireshark构建一个解剖器。但是,我收到了一个错误。

  1. 我按照这个link从Windows上的源代码安装Wireshark,我能够成功构建和运行该软件。
  2. 然后使用README.plugins,我添加了一个插件,并完成了文件中提到的所有更改。
  3. 使用该插件,它已成功构建,但每当我尝试运行它时,都会出现一个对话框,指出The plugin 'ABC.dll' has neither a register routine, a register_tap_listener or a register_wtap_module or a register_codec_module routine.。虽然wireshark运行正常,但我的插件不包含在其中。
  4. Linux环境:我尝试在linux平台上编译和运行,并且它运行正常,包含插件。
    任何人都可以告诉我,我可能在Windows平台上出错了。感谢。

1 个答案:

答案 0 :(得分:0)

在Windows上构建插件时会发生一些魔术,因此DLL中的某些符号被声明为已导出,因此可以在运行时在DLL中找到它们。 (我最近没有挖掘所有细节,但是* nix上的机制不同,因此每个平台上的结果可能会有所不同。)

您正在构建什么版本的Wireshark? (你是如何获得Wireshark资源的?)。

您收到的具体错误消息表明您可能正在构建WWireshark 1.10的版本。 (该消息在Wireshark开发版本(1.11)中已更改)。

在任何情况下,对于如何在Windows上构建DLL,某些事情(显然)都是不对的。

我的建议是一个起点:

你可能会知道错误是什么 将Windows上的插件目录中的plugin.c文件(在生成时生成)与其他Wireshark Windows插件目录中的plugin.c进行比较。

魔法发生在那个文件中。

类似的事情:

WS_DLL_PUBLIC_NOEXTERN void
plugin_reg_handoff(void)
{
  {extern void proto_reg_handoff_unistim (void); proto_reg_handoff_unistim ();}
}