我正在尝试在Windows平台上为Wireshark构建一个解剖器。但是,我收到了一个错误。
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运行正常,但我的插件不包含在其中。答案 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 ();}
}