From: Stephen Leake <stephen.a.leake.1@gsfc.nasa.gov>
Subject: Re: Help with GNAT, WinNT, StdCall, dll, exported names
Date: 11 Oct 2001 09:28:22 -0400
Date: 2001-10-11T13:30:13+00:00 [thread overview]
Message-ID: <un12ye26h.fsf@gsfc.nasa.gov> (raw)
In-Reply-To: %lfx7.6$_o6.503@newsc.telia.net
"Peter Hend�n" <phenden@tdab.com> writes:
> I'm using gnat 3.13p, trying to build a dll that exports functions
> that are to be called by a windows service. The problem is
> that the functions are declared in the .h file as
>
> BOOL WINAPI Foobar(LPFUNNY_STRUCT fum);
>
> Now I have defined an Ada function for this, and
> it works fine when I export it as
> pragma Export(C, Foobar, "Foobar");.
>
> Of course this will be called exactly once, because
> it is the wrong calling convention, and after its return
> the stack is fubar.
>
> When I try to declare it StdCall instead of C, I am
> not able to link it. Whatever I put in the .DEF file
> it comes out wrong. I get from the last gnatlink step
> in gnatdll:
>
> mydll.exp(.edata+0x34):fake: undefined reference to `Foobar'
>
> I have tried everything in the gnat user's guide, searched
> this groups archive and generally banged my head against
> the wall in appropriate - and perhaps not so appropriate -
> ways. Please help!
You don't mention what C compiler you are using. I have found that
different C compilers (and different Ada compilers) have different
naming conventions, usually having to do with prepending and
underscore. Here's my matrix:
compiler calling function link DLL
convention name name name
Borland C++ Cdecl foo _foo _foo
stdcall foo foo foo
Borland C Cdecl foo _foo _foo
stdcall foo foo foo
GNAT Ada C foo _foo foo
(stdcall not supported in DLLs)
Gnu C C foo _foo foo
ObjectAda
Ada DLL_Cdecl foo _foo foo
DLL_Stdcall foo _foo foo
I also have this note:
Since GNAT Ada does not support the stdcall convention for DLLs, we
use the Cdecl convention everywhere.
That was true for 3.12, apparently it's not true anymore.
Hope this helps!
--
-- Stephe
next prev parent reply other threads:[~2001-10-11 13:28 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-11 11:26 Help with GNAT, WinNT, StdCall, dll, exported names Peter Hend�n
2001-10-11 11:44 ` David Botton
2001-10-11 16:06 ` Peter Hend�n
2001-10-11 19:03 ` David Botton
2001-10-11 13:28 ` Stephen Leake [this message]
2001-10-11 16:23 ` Peter Hend�n
2001-10-11 19:24 ` David Botton
2001-10-11 23:28 ` Peter Hend�n
2001-10-11 23:46 ` David Botton
2001-10-12 9:48 ` Peter Hend�n
2001-10-11 17:59 ` Sergey Koshcheyev
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox