This is the mail archive of the
cygwin@cygwin.com
mailing list for the Cygwin project.
RE[2}: Why does this __declspec(dllimport) fail to compile?
- To: Cygwin <cygwin at cygwin dot com>
- Subject: RE[2}: Why does this __declspec(dllimport) fail to compile?
- From: Danny Smith <danny_r_smith_2001 at yahoo dot co dot nz>
- Date: Sat, 11 Aug 2001 09:04:59 +1000 (EST)
--- 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/