comp.lang.ada
 help / color / mirror / Atom feed
From: "Peter Hend�n" <phenden@tdab.com>
Subject: Help with GNAT, WinNT, StdCall, dll, exported names
Date: Thu, 11 Oct 2001 11:26:51 GMT
Date: 2001-10-11T11:26:51+00:00	[thread overview]
Message-ID: <%lfx7.6$_o6.503@newsc.telia.net> (raw)

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1040 bytes --]

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!

/Peter H.

--
Peter Hend�n           http://www.algonet.se/~phenden
ICQ: 14672398
Teknisk Dokumentation AB          http://www.tdab.com





             reply	other threads:[~2001-10-11 11:26 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-10-11 11:26 Peter Hend�n [this message]
2001-10-11 11:44 ` Help with GNAT, WinNT, StdCall, dll, exported names David Botton
2001-10-11 16:06   ` Peter Hend�n
2001-10-11 19:03     ` David Botton
2001-10-11 13:28 ` Stephen Leake
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