This is the mail archive of the
cygwin@cygwin.com
mailing list for the Cygwin project.
Re: function pointers & DLL's
- To: Jesper Eskilson <jojo at virtutech dot com>
- Subject: Re: function pointers & DLL's
- From: Andrej Borsenkow <Andrej dot Borsenkow at mow dot siemens dot ru>
- Date: Sun, 13 May 2001 13:43:18 +0400 (MSD)
- cc: Alan Hourihane <alanh at fairlite dot demon dot co dot uk>, <cygwin at cygwin dot com>
On Sun, 13 May 2001, Jesper Eskilson wrote:
> On Sun, 6 May 2001, Alan Hourihane wrote:
>
> > Everything works fine. But what I'm trying to do is find a way at the linker
> > stage that negates me having to make these __declspec statements. Is there
> > any way this is possible ?
>
> For VC++ (at least) __declspec(dllimport) is purely optional and never
> required. The only this they do is to enable the compiler to skip an
> indirection in the jump and generate a slightly more efficient jump.
>
For GCC (at least :-) __declspec(dllimport) is optional for functions but
is mandatory for variables. The side-effect of the above is, that function
address is no more static and cannot be used as static initializer, e.g.
in function dispatch table like
extern __declspec(dllimport) foo();
static dispatch tbl = {
...
foo,
...
}
That is clear, because __declspec(dllimport) basically replaces any
reference to an object by a thunk that returns object's address.
-andrej
--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple