RE[2}: Why does this __declspec(dllimport) fail to compile?

Danny Smith danny_r_smith_2001@yahoo.co.nz
Fri Aug 10 16:05:00 GMT 2001


 --- Danny Smith <danny_r_smith_2001@yahoo.co.nz> wrote: > Date: Fri,
10 Aug 2001 10:42:15 +1000 (EST)
> From: Danny Smith <danny_r_smith_2001@yahoo.co.nz>
> Subject: RE: Why does this __declspec(dllimport) fail to compile?
> To: Cygwin <cygwin@cygwin.com>
> 
> To: cygwin at sources dot redhat dot com 
> Subject: Why does this __declspec(dllimport) fail to compile? 
> From: Mo DeJong <mdejong at cygnus dot com> 
> 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/



More information about the Cygwin mailing list