Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , 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 X-X-Sender: To: Jesper Eskilson cc: Alan Hourihane , Subject: Re: function pointers & DLL's In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII 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