|From: Lars Roland
|
|Olivier Biot wrote:
|> From: Guy Harris
|>
|> | Speaking of Windows builds:
|> |
|> | 1) For MSVC++ builds, can we get rid of the plugin API table by
|> | just having libethereal export the functions in question and
|> | linking the plugins against libethereal (or a .lib for
|> | libethereal)?
|>
|
|The plugins export functions, too. If we make libethereal just
|exporting
|the necessary functions and make the plugins link with libethereal via
|an import library, we will have to find a way to make formerly
|exported
|functions of the plugins available to libethereal.
|
|Because MSVC doesn't allow to build a non self contained dll
|you cannot
|easily create two libraries with each of them having
|dependencies on the
|other. :(
|
|> That was the way it has been done in order to make Ethereal build
|> *with plugins* in a cygwin environment (with all the required
|> autotools).
|>
|Are you sure that cygwin builds without the plugin api table?
I had to add libethereal to the plugin libraries in order to generate the
plugin dissectors on cygwin. I interpret this as: cygwin *doesn't* need the
plugin API table (as all missing symbols are contained within libethereal
which is explicitly required in the linkage in order to build on cygwin!).
See the PLUGIN_LIBS macro in the plugin dissector's Makefile.am files, and
the top-level configure.in with the defintion of the PLUGIN_DIR macro:
PLUGIN_LIBS="-L../../epan -lethereal $GLIB_LIBS"
AC_SUBST(PLUGIN_LIBS)
As I didn't hear of broken builds since I changed the plugin LIBADD value, I
even suppose we *no longer* need the plugin API table *at all*.
Maybe I am wrong in my interpretation, but I must admit that all the linking
magic is not really my specialty. For instance, I have no clue on how to
disable the generation and usage of the plugin API table in the generation
of the plugin dissectors (neither in *NIX with autotools, nor in native
MSWin with MSVC++ 6).
I think it would be valuable to modify the MSVC++ Makefile.nmake files so
the plugin dissector are linked with libethereal and not anymore with the
plugin API. As I am not a MSVC++ connoisseur (I only run the nmake from the
command-line and am happy when everything runs smoothly) I invite anyone who
knows how to perform the mentioned changes to give them a try and send
feed-back on ethereal-dev.
I wish you Good Luck and hope to hear Good News soon!
Regards,
Olivier