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.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,d9ad419d8c604c82 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-06-24 10:35:36 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!cyclone.bc.net!in.100proofnews.com!in.100proofnews.com!news-out.visi.com!petbe.visi.com!dca1-feed2.news.algx.net!dca1-feed1.news.algx.net!allegiance!dca1-nnrp1.news.algx.net.POSTED!not-for-mail Message-ID: <3EF88C70.8090405@sd.aonix.com> From: Steve Hancher Organization: ... User-Agent: Mozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.0.2) Gecko/20021120 Netscape/7.01 X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: Linking libraries from the command line using ObjectAda on Windows References: <3ef87707$0$13736$afc38c87@news.easynet.fr> Content-Type: text/plain; charset=x-mac-roman; format=flowed Content-Transfer-Encoding: 7bit Date: Tue, 24 Jun 2003 17:34:13 GMT NNTP-Posting-Host: 216.120.49.221 X-Complaints-To: abuse@algx.net X-Trace: dca1-nnrp1.news.algx.net 1056476053 216.120.49.221 (Tue, 24 Jun 2003 13:34:13 EDT) NNTP-Posting-Date: Tue, 24 Jun 2003 13:34:13 EDT Xref: archiver1.google.com comp.lang.ada:39682 Date: 2003-06-24T17:34:13+00:00 List-Id: Xavier SAUTEJEAU wrote: > Hi Everyone, > > From the command line, I'd like to know how to build an exe that links with > a static library with ObjectAda. > > Here is the library I want to build. > > -- directory structure > LibCall.adb -- file that calls the library > Dummy.adb -- dummy file that Withs the library units > + P_hello > - P_hello.ads > - P_hello.adb > + P_hello_2 > - P_hello2.ads > - P_hello2.adb > > --P_hello2.ads > package P_hello2 is > procedure hello; > end P_hello2; > > --P_hello2.adb > With text_io;use text_io; > package body P_hello2 is > procedure hello is > begin > Put_Line("Hello library world 2"); > end hello; > > end P_hello2; > > --P_hello.ads > package P_hello is > procedure hello; > end P_hello; > > --P_hello.adb > With text_io;use text_io; > package body P_hello is > procedure hello is > begin > Put_Line("Hello library world"); > end hello; > > end P_hello; > > -- Dummy.adb > With P_Hello; > With P_Hello2; > > procedure Dummy is > begin > null; > end dummy; > > > To build the library I use the following commands > > adareg P_hello\*.ad* > adareg P_hello_2\*.ad* > adareg dummy.adb > adamake > adabuild dummy > dir /s /b *.obj > list.txt > lib /out:hello.lib @list.txt > del /q list.txt ada.lib unit.map > > Here is the exe I want to build that links with the library. > > -- libcall.adb > With P_Hello; > With P_Hello2; > procedure libcall is > begin > P_Hello.HELLO; > P_Hello2.HELLO; > end Libcall; > > > To build the exe I use the following commands > > REM registering library search path > adaopts -p. > adaopts -lp . > REM registering source files > adareg P_hello_2\*.ads > adareg P_hello\*.ads > > adareg libcall.adb > > adabuild libcall -ll hello > > And I get the following output: > ObjectAda Special Edition Version 7.2.2: adabuild > Copyright (c) 1997-2002 Aonix. All rights reserved. > Front end of libcall.adb succeeded with no errors. > Front end of p_hello_2\p_hello2.ads succeeded with no errors. > Front end of p_hello\p_hello.ads succeeded with no errors. > libcall: Error: Source not found for P_hello2, NO_KIND. Can't recompile. > > libcall: Error: Source not found for P_hello, NO_KIND. Can't recompile. > > libcall: Error: Body not found for P_hello2 > > libcall: Error: Body not found for P_hello > > libcall: Error: Link ended due to previous errors. > > > Where did I go wrong ? > > Any help would be appreciated. > > You have a misunderstanding about the relationship between Ada libraries and Windows libraries. Creating a Windows library from Ada object files only removes the requirement for the OBJ directory. After creating the Windows library, you should not delete either ADA.LIB or UNIT.MAP. Then, libcall.adb should be compiled into a different Ada library with a reference (via adaopts) to the Ada library containing P_hello and P_hello2. By the way, you don't need to compile dummy.adb, you don't need to build dummy, and the adamake won't work because you have never compiled anything.