delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2001/05/13/05:43:51

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT sources DOT redhat DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sources DOT redhat DOT com>
List-Help: <mailto:cygwin-help AT sources DOT redhat DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT sources DOT redhat DOT com
Delivered-To: mailing list cygwin AT sources DOT redhat DOT com
X-Envelope-Sender-Is: Andrej DOT Borsenkow AT mow DOT siemens DOT ru (at relayer david.siemens.de)
Date: Sun, 13 May 2001 13:43:18 +0400 (MSD)
From: Andrej Borsenkow <Andrej DOT Borsenkow AT mow DOT siemens DOT ru>
X-X-Sender: <bor AT itsrm2 DOT mow DOT siemens DOT ru>
To: Jesper Eskilson <jojo AT virtutech DOT com>
cc: Alan Hourihane <alanh AT fairlite DOT demon DOT co DOT uk>, <cygwin AT cygwin DOT com>
Subject: Re: function pointers & DLL's
In-Reply-To: <Pine.WNT.4.33.0105131119550.2408-100000@LEIA>
Message-ID: <Pine.SV4.4.33.0105131338230.23635-100000@itsrm2.mow.siemens.ru>
MIME-Version: 1.0

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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019