Re: [sigc] Compiling libsic++ as a DLL under Windows
- From: Martin Schulze <martin-ml hippogriff de>
- To: Arnaud Debaene <Arnaud Debaene metravib fr>
- Cc: libsigc-list gnome org
- Subject: Re: [sigc] Compiling libsic++ as a DLL under Windows
- Date: Thu, 29 Jul 2004 16:46:24 +0200
Hi Arnaud!
We would happily accept a patch against cvs. Please modify the affected
header files to include sigc++config.h.
Don't forget that most header files get generated from .m4 files in the
macros/ subdirectories; these are the files to modify.
sigc++config.h is also generated by the configure script, so please add
the #defines in sigc++config.h.in. We already need a patch that
provides (and makes the library use) a pregenerated sigc++config.h in
the MSVC project directory. Maybe you can also include this in your
patch.
Thanks!
Martin
Am 28.07.2004 11:34:07 schrieb(en) Arnaud Debaene:
I am trying to build a Win32 DLL from libsigc++ (see
http://lists.gnome.org/archives/libsigc-list/2004-July/msg00027.html
for
another message on the subject).
Among other things, I need to export some symbols from the DLL using
the
__declspec(dllexport) Microsoft stuff. I have therefore defined a
SIC_API macro as suggested by James Lin.
The macro is used on several places:
connection.h :
l 39 : struct SIGC_API connection
trackable.h :
l 35 : struct SIGC_API trackable_callback
l 49 : struct SIGC_API signal_base : public trackable
l 89 : struct SIGC_API trackable
signal_base.h :
l 43 : struct SIGC_API signal_impl
l 139 : struct SIGC_API signal_exec
l 195 : struct SIGC_API signal_base : public trackable
adaptors\lambda\select.h :
l 335 : SIGC_API extern const lambda<internal::lambda_select1> _1;
SIGC_API extern const lambda<internal::lambda_select2>
_2;
SIGC_API extern const lambda<internal::lambda_select3>
_3;
SIGC_API extern const lambda<internal::lambda_select4>
_4;
SIGC_API extern const lambda<internal::lambda_select5>
_5;
SIGC_API extern const lambda<internal::lambda_select6>
_6;
SIGC_API extern const lambda<internal::lambda_select7>
_7;
Functors\slot_base.h :
l 52 : struct SIGC_API slot_rep : public trackable
l 123 : struct SIGC_API slot_do_bind
l 141 : struct SIGC_API slot_do_unbind
l 206 : class SIGC_API slot_base : public functor_base
These are all the symbols I have identified that need to be exported
from the DLL (basically, that is everything that is non template).
Now, the definition of the SIGC_API macro should be (according to MS
standard way of doing things):
#ifndef SIGC_API
#ifdef _MSC_VER //Visual C++ only
#ifdef SIGC_DLL_EXPORT
#define SIGC_API __declspec(dllexport)
#else
#define SIGC_API __declspec(dllimport)
#endif
#else
#define SIGC_API
#endif
#endif
And SIGC_DLL_EXPORT should be defined in the Visual C++ project file
used to build the DLL.
My question is: *WHERE* do I put the SIGC_MACRO definition?
sigc++_config.h sounds like a good candidate, but it isn't #included
by
all the headers where this macro is used. In fact there doesn't seems
to
be a common header included by everyone where I could put it. In
LibSigC++ 1.2, it was done in sigcconfig.h, but there does not seems
to
be an equivalent in version 2.
Thanks for any idea.
PS: Once this problem solved, I could post an updated version of the
Visual C++ project, if it may help.
_______________________________________________
libsigc-list mailing list
libsigc-list gnome org
http://mail.gnome.org/mailman/listinfo/libsigc-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]