【问题标题】:Wireshark Disscetor Error on Windows PlatformWindows 平台上的 Wireshark Disscetor 错误
【发布时间】:2014-02-04 00:08:28
【问题描述】:

我正在尝试在 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 平台上可能出错的地方。谢谢。

【问题讨论】:

    标签: wireshark wireshark-dissector


    【解决方案1】:

    在 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 ();}
    }
    

    【讨论】:

    • 非常感谢。我调试了Makefile.nmake,它依赖于哪个plugin.c,它运行没有任何错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 2017-07-14
    • 1970-01-01
    相关资源
    最近更新 更多