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=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: The best possible way to call a function in a shared library Date: Mon, 2 Oct 2017 09:30:54 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <9885a3fd-8ffa-4076-ba1f-db2f8035e0dc@googlegroups.com> NNTP-Posting-Host: lKHBldubgAWx1EqbQpQ5LQ.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 Content-Language: en-US X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:48269 Date: 2017-10-02T09:30:54+02:00 List-Id: On 01/10/2017 23:06, John Smith wrote: > I've recently come across this example on rosettacode: > http://rosettacode.org/wiki/Call_a_function_in_a_shared_library#Ada > > I have a project that's building a DLL. There is a neighboring > project file that builds an executable and needs to make use of the > DLL. Is it possible to include the DLL in the application through the > 2nd project file? DLL is not included, it is loaded/linked/mapped to. [ In order to include DLL you must extract object files from there, if that works, then put them into a static library and use that instead. ] In the scenario when the DLL is to be linked to at build time and loaded automatically at the application start, you create two library project files. One is used to build the library itself. Another is to use the library in another project. See GNAT project files. Essential for "build" project is for Library_Interface use (); which determines which Ada units get exported out of the library. For the "use" project it is for Externally_Built use "true"; telling that the library is already built. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de