Hi, Maybe you want to look into the WS_VAR_IMPORT macro for that. But then again I'm no Windows developer.
Thanx, Jaap [email protected] wrote: > Hi, > > I wish to answer myself because I found the solution. Thanks to Jeff for > the idea of sharing only the variable in the preferences. I give here > what I did, hoping it can be useful for somebody (maybe it can be put in > a README or somewhere else). It was tested with MSVC++2008EE, with the > two plugins like indicated in a previous mail in copy below. The aim was > to share preferences defined in a plugin in order to be used by another > plugin. > > In the main plugin (called plugin1, the one that contains the > preferences definition), the variable(s) that store the preference > (range, UAT) must be declared directly in the C-code (i.e. > packet-plugin1.c, header is not necessary) with the prefix > __declspec(dllexport). For example, with a range of UDP ports: > > __declspec(dllexport) range_t *bite_udp_range; > > Then plugin1 can be compiled. The files packet-plugin1.obj and > plugin1.lib must be copied into the directory of plugin2. > In packet-plugin2.c, declare the same variable with the prefix > __declspec(dllimport). Following the same example, we have: > > __declspec(dllexport) range_t *bite_udp_range; > > The last step is to modify the Makefile.nmake of plugin2 directory as > follow (adding files of plugin1 in the 2nd line): > > > $(PLUGIN_NAME).dll $(PLUGIN_NAME).exp $(PLUGIN_NAME).lib : $(OBJECTS) > $(LINK_PLUGIN_WITH) $(RESOURCE) > link -dll /out:$(PLUGIN_NAME).dll $(LDFLAGS) $(OBJECTS) > packet-plugin1.obj $(LINK_PLUGIN_WITH) plugin1.lib\ > $(GLIB_LIBS) $(RESOURCE) > > Plugin2 can be compiled. I tried it only with a range_t but I'll try it > in few weeks with an entire UAT table. This probably works only for > Windows because "__declspec(dllexport)" is Windows-specific. > > Thanks everyone for your help! > > Yvan > > ------------------------------------------------------------------------ > *De :* Jeff Morriss <[email protected]> > *À :* Developer support list for Wireshark <[email protected]> > *Envoyé le :* Jeudi, 23 Avril 2009, 17h50mn 36s > *Objet :* Re: [Wireshark-dev] Tr : Dissector preferences reuse > > > > [email protected] <mailto:[email protected]> wrote: > > > I 'm working on 2 plugin dissectors, and I wish to know if it's possible > > (and if yes, how) to reuse preferences from one plugin to another. I > > need to reuse only a part of the preferences (which is an UAT table, so > > pretty long and boring to define) from plugin1 to plugin2, considering > > that protocol2 is included in plugin1 like this: > > plugin1 > > IP struct > > UDP struct > > plugin2 > > Can the copy_prefs() function be useful? How must I define the > > preferences in plugin1 to divide it in 2 parts? How to integrate a > > separated part into preferences of plugin2? > > Well, the plugins could simply share the variable that stores the > preference. Basically: make the variable not 'static' (so it is visible > to other modules), put it in a header file (properly 'extern'd), and > have both plugins include the header file and use the variable. > > For an example, see the mtp3_standard preference in packet-mtp3.{h,c}. > > Note: I know this works for regular dissectors but I don't know if the > rules are different for plugins--especially on Windows. ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <[email protected]> Archives: http://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:[email protected]?subject=unsubscribe
