From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,3db3a64384280d0f X-Google-Attributes: gid103376,public From: Gene Ouye Subject: Re: Ada to C++ communication under NT4.0 Date: 1998/08/21 Message-ID: <35DE3504.73D42417@rational.please_no_unsolicited_mail.com>#1/1 X-Deja-AN: 383544435 Content-Transfer-Encoding: 7bit References: <01bdc0c8$e8a76a80$0f010180@nc84c> <35c8ecf5.0@news1.ibm.net> <01bdc494$f3eab0d0$0f010180@nc84c> <35D2DA1B.64D7@erols.com> Content-Type: text/plain; charset=us-ascii Organization: Rational Software Mime-Version: 1.0 Newsgroups: comp.lang.ada Date: 1998-08-21T00:00:00+00:00 List-Id: FYI, Rational Apex Ada NT also uses the MS object file format and can link with MSVC++ code. However, as you mention below, DLLs are another way to make multi-language applications in Windows. I have found most people find it simpler to create Ada DLLs (which you can do with Apex) which can then called by any language you choose. Gene Ouye Stephen Leake wrote: [...] > There are two issues in combining C++ and Ada into a single executable: > object file format and elaboration/finalization. > > The current fully supported version of the GNAT compiler (3.11?) > supports the Microsoft object format, so it can link C++ compiled with > MS C++ with Ada compiled by GNAT. The current public version of GNAT > (3.10) can't do this. However, ObjectAda from Aonix uses the MS object > file format for Ada code; it can link with MS C++. Note that Borland > uses a different object file format, and can't link with any of these. > > Another way around the object file format problem is to make DLLs. In my > current application, I use ObjectAda to make a DLL, and call it from > Borland C++. GNAT can also make DLLs. > > The elaboration/finalization problem is solved by explicitly calling the > elaboration and finalization code that is normally called by "main". In > general, you can have either an Ada main that explicitly calls the C++ > stuff, or a C++ main that explicitly calls the Ada stuff. The GNAT > user's guide has good instructions on how to call the GNAT > elaboration/finalization code. > > Multi-language programming is the best way to introduce people to Ada! > > -- Stephe