On Sat, Nov 16, 2013 at 12:25:53PM -0800, Guy Harris wrote: > > On Nov 16, 2013, at 1:54 AM, buildbot-no-re...@wireshark.org wrote: > > > The Buildbot has detected a new failure on builder Windows-7-x64 while > > building Wireshark (development). > > Full details are available at: > > http://buildbot.wireshark.org/trunk/builders/Windows-7-x64/builds/7888 > > > > Buildbot URL: http://buildbot.wireshark.org/trunk/ > > > > Buildslave for this Build: windows-7-x64 > > > > Build Reason: scheduler > > Build Source Stamp: 53366 > > Blamelist: darkjames > > > > BUILD FAILED: failed nmake all > > Would somebody with sufficient Windows build experience care to indicate what > the right way is to handle a variable (not a function) that is: > > exported by library A; > > imported by library B; > > declared in a header file that's included by the source file in library > A that defines the variable and by the source files in library B that use the > variable? > > The problem is that the source file in library A *and* the source files in > library B are *both* compiled with "this is going into a DLL" flag on > Windows, as they *are* all going into DLLs on Windows, so that -D flag cannot > be used to control whether the declaration in the header file is "this is > being exported" (__declspec(dllexport)) and "this is being imported" > (__declspec(dllimport)).
Ups, my fault. Looking how it's done in glib (GLIB_VAR definition [1]): # ifdef G_PLATFORM_WIN32 # ifdef GLIB_COMPILATION # define GLIB_VAR __declspec(dllexport) # else /* !GLIB_COMPILATION */ # define GLIB_VAR extern __declspec(dllimport) # endif /* !G_PLATFORM_WIN32 */ In our bulding system the similar thing of GLIB_COMPILATION does WS_BUILD_DLL, but it's always set when building library i.e. epan, wiretap, wsutil. So we can't have one WS_BUILD_DLL because we need to distinguish if we want to export (the same library) or import symbol (different library) or use extern (the same library). in Makefiles: -DWS_BUILD_DLL=EPAN, -DWS_BUILD_DLL=WSUTIL, WS_BUILD_DLL=WIRETAP + instead of one WS_DLL_PUBLIC we need to use some: WS_DLL_PUBLIC(EPAN), WS_BUILD_DLL(WSUTIL)... later in WS_DLL_PUBLIC(x) compare #if x == WS_BUILD_DLL Does it makes sense? Still it seems to be quite complicated for one bitswap variable... (revert?). Kuba. [1] https://git.gnome.org/browse/glib/tree/glib/gtypes.h ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev@wireshark.org> Archives: http://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe