Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

I download all of the tools that are necessary and set up my Wireshark build environment and build Wireshark along with my four plugins.

This results in a plugin that should work with the version of Wireshark that you built.

Unless that version of Wireshark was built from the source code to a 4.0.x version of Wireshark, it is not guaranteed to result in a plugin that will work with a 4.0.x version of Wireshark, as we do not guarantee binary compatibility between major releases of Wireshark - including, for example, 4.0.x and a future 4.2.x; we only guarantee binary compatibility between dot-dot releases.

If you follow the instructions in section 2.2.10 "Install and Prepare Sources" of the Developer's Guide, you will be building a Wireshark from a snapshot of the current under-development next major release of Wireshark, which is not guaranteed to be binary compatible with 4.0.x, or even with that future major release.

So you'll need to get the 4.0.3 source code for Wireshark, and build your plugins in that directory hierarchy. The "Source Code" link in the "Download Wireshark" section of our shiny new main web page will provide the source to 4.0.3. It's in the form of an XZ-compressed tarball, so you might need WinZip to unpack it.

Can someone tell me how to figure out which "specified procedure" is not being found

If you build it with the 4.0.3 source code, it will probably either 1) result in a binary that doesn't call that procedure or 2) fail to build, with a linker error giving the name of the procedure. The error might be of the form

error LNK2019: unresolved external symbol __imp_procedure_name referenced in function my_dissector_xyzzy

which would mean that the procedure is named procedure_name and it's called from a function named my_dissector_xyzzy.

(I'm doing some tests to see what information error messages that Windows displays for this situation provide, and whether there's anything we can do to get more information, such as the name of the procedure. If not, that's ultimately on Microsoft, not us; the equivalent mechanism in UN*Xes has a call to get an error message string, which, at leas on macOS, is extremely technical, but does mention the name of the procedure.)

But we don't distribute our own Wireshark. We only distribute our plugin dlls and let our users install the latest version from Wireshark.

This means that users not running Windows won't be able to use your plugin. If you make the source code to your plugin available, that would allow users not running Windows to build it (again, using the source to the version of Wireshark that they're using) and use it.

(Note that the GNU Public License version 2, which is the license under which Wireshark is distributed, requires you to make source to your plugin available to any organization to which you have provided the dll.)