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 Message-ID: <20010810230459.88340.qmail@web14508.mail.yahoo.com> Date: Sat, 11 Aug 2001 09:04:59 +1000 (EST) From: =?iso-8859-1?q?Danny=20Smith?= Subject: RE[2}: Why does this __declspec(dllimport) fail to compile? To: Cygwin MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit --- Danny Smith wrote: > Date: Fri, 10 Aug 2001 10:42:15 +1000 (EST) > From: Danny Smith > Subject: RE: Why does this __declspec(dllimport) fail to compile? > To: Cygwin > > To: cygwin at sources dot redhat dot com > Subject: Why does this __declspec(dllimport) fail to compile? > From: Mo DeJong > Date: Thu, 9 Aug 2001 02:10:53 -0700 (PDT) > > ------------------------------------------------------------------------ Here is perhaps a better solution that does work with C: gcc -mno-fun-dllimport which ignores the dllimport attribute for functions (no __imp__foo symbol, just _foo). Danny > > The code does compile if use G++. I think the FAQ you cite says that > MSVC++ also needs to compile as C++ > > This function is provided by G++ to do the job: > gcc/cp/decl2.c > /* The name of the function we create to handle initializations and > destructions for objects with static storage duration. */ > #define SSDF_IDENTIFIER "__static_initialization_and_destruction" > > > Danny > ----------------------------------------------------------------------- > Mo DeJong wrote: > > Hi. > > I have run into a little problem with a static initializer > that seems to work just fine with VC++ but fails with gcc. > > % cat callback.c > extern __declspec(dllimport) > void ExtCallback(void); > > typedef void (callback) (void); > > typedef struct Scallback { > callback*c1; > } Scallback; > > static Scallback scall = {ExtCallback}; > > int main() { > callback*sc = scall.c1; > return (int) sc; > } > > % gcc -c callback.c > callback.c:10: initializer element is not constant > callback.c:10: (near initialization for `scall.c1') > > When this same code it compiled with VC++ it waits > until link time to figure out the function address. > > Why does this fail with gcc? > > P.S. > > Other folks have mentioned this python FAQ but > it does not explain why gcc generates this error. > > http://www.python.org/doc/FAQ.html#3.24 > > > > _____________________________________________________________________________ > http://shopping.yahoo.com.au - Father's Day Shopping > - Find the perfect gift for your Dad for Father's Day > _____________________________________________________________________________ http://shopping.yahoo.com.au - Father's Day Shopping - Find the perfect gift for your Dad for Father's Day -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/