comp.lang.ada
 help / color / mirror / Atom feed
From: "David Botton" <David@Botton.com>
To: <comp.lang.ada@ada.eu.org>
Subject: Re: Help with GNAT, WinNT, StdCall, dll, exported names
Date: Thu, 11 Oct 2001 07:44:12 -0400
Date: 2001-10-11T07:44:12-04:00	[thread overview]
Message-ID: <mailman.1002800655.9179.comp.lang.ada@ada.eu.org> (raw)
In-Reply-To: %lfx7.6$_o6.503@newsc.telia.net

Why would you use a DLL for this? Creating a simple Ada COM object is easier
to do in Ada and easier to use in C++!

See the tutorial in GNATCOM for a detailed basic example (should be enough
to get you started). In summary:

1. Create the IDL for your Ada based COM object and compile with midl.exe
from VC++
2. Run CreateCOM on the TLB that is created by midl.exe
3. Fill in the blanks in the Ada code!!
4. Compile and register object

On the C++ side use #import "XXXX.dll" where XXXX.dll is the Ada COM object
dll created above.

MyInterfacePtr X;
X.Create (__uuidof(MyObject));
X->DoMyStuff ();
X = NULL;

Done.

http://www.adapower.com/gnatcom

David Botton




----- Original Message -----
From: "Peter Hend�n" <phenden@tdab.com>
Newsgroups: comp.lang.ada
To: <comp.lang.ada@ada.eu.org>
Sent: Thursday, October 11, 2001 7:26 AM
Subject: Help with GNAT, WinNT, StdCall, dll, exported names


> 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
>
>
> _______________________________________________
> comp.lang.ada mailing list
> comp.lang.ada@ada.eu.org
> http://ada.eu.org/mailman/listinfo/comp.lang.ada
>




  reply	other threads:[~2001-10-11 11:44 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 [this message]
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