ANNOUNCEMENT: Live Wireshark University & Allegro Packets online APAC Wireshark Training Session
April 17th, 2024 | 14:30-16:00 SGT (UTC+8) | Online

Wireshark-dev: [Wireshark-dev] Why isn't libwireshark.def autogenerated?

From: Gregory Seidman <gsslist+wireshark@xxxxxxxxxxxxxxxxxx>
Date: Fri, 17 Dec 2010 09:21:16 -0500
I keep running into this issue where I'm working on a dissector plugin (for
internal distribution, on Windows) and want to use some function declared
in a header file in epan or epan/dissectors only to discover that it won't
link. Even if I modify libwireshark.def in my source tree so the plugin
will link, it will fail to load in any other build of Wireshark (e.g. the
standard release).

Why isn't libwireshark.def generated from all of those header files as part
of the build system? Is it just the difficulty of extracting those function
declarations, or is there some policy reason? Would there be any objection
to a patch (almost certainly including a Perl or Python script) to generate
it as part of the build?

Note that this is unique to Windows, as far as I know. Shared objects
(a.k.a. DLLs) under any *nix system I know of default to exporting all
(non-static) symbols. Windows DLLs, however, default to exporting no
symbols, and there are mechanisms both in the code (i.e. a keyword) and
outside the code (i.e. a .def file) to explicitly export individual
symbols.

--Greg