comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Using Gnat.Sockets in a Windows DLL
Date: Tue, 8 Dec 2015 10:52:20 +0100
Date: 2015-12-08T10:52:20+01:00	[thread overview]
Message-ID: <t4yow1aoojyi.1x6tlhmcwotbh$.dlg@40tude.net> (raw)
In-Reply-To: 26b16c1d-46d5-45ea-92a9-d321fea68716@googlegroups.com

On Mon, 7 Dec 2015 23:43:18 -0800 (PST), ahlan@marriott.org wrote:

> If I have a one line test program that merely initialises a socket, ie
> 
>   My_Socket : GNAT.Sockets.Socket_Type;
> begin
>   GNAT.Sockets.Create_Socket (My_Socket);
> 
> then we have no problems building an executable but if we try and use the same
> lines in a DLL we fail to find the external references.
> Even if I explicitly put "Pragma Linker_Options ("-lws2_32");
> and place libws2_32.a in the Library_Dir Gnat still fails to satisfy the references.
> 
> I am at a loss as to what I might be doing wrong and what I could try next.
> This should be easy to solve, it probably has nothing to do with Gnat Sockets
> but more to do with building DLLs using a GPR file.
> 
> The following is our Gpr file
> with "gtkada";
> with "win32ada";
> 
> project Monitor is
> 
>    package Naming is
>       for Casing use "mixedcase";
>    end Naming;
> 
>    for Library_Name use "Monitor";
>    for Shared_Library_Prefix use "";
> 
>    for Source_Dirs use ("w:\source\ada\interfaces\monitor",
>                         "w:\source\ada\interfaces",
>                         "w:\source\ada\shared",
>                         "w:\source\ada\open\shared");
> 
>    for Library_Interface use ("Monitor_Interface");
> 
>    for Object_Dir use "objects";
> 
>    for Library_Options use ("-Lw:\product\windows", "resources.o");
>    for Library_Dir use "w:\product\windows";
>    for Library_Ali_Dir use "d:\binary\ada\interfaces\monitor";
>    for Library_Kind use "dynamic";
>    for Library_Standalone use "encapsulated";
> 
>    package Pretty_Printer is
>       for Default_Switches ("ada") use ("-i2", "-M120", "-aL", "-A1", "-A4");
>    end Pretty_Printer;
> 
>    package Builder is
>       for Default_Switches ("ada") use ("-s", "-g");
>    end Builder;
> 
>    package Compiler is
>       for Default_Switches ("ada") use ("-O1", "-gnatQ", "-gnato", "-g", "-gnat12",
>                                         "-gnatwcehijkmopruvz.c.n.p.t.w.x", "-gnatykmpM120");
>    end Compiler;
> 
>    package Binder is
>       for Default_Switches ("ada") use ("-E");
>    end Binder;

How about:

package Linker is
   for Linker_Options use ("-lws2_32");
end Linker;

P.S. You also can create projects for the external DLLs (like Windows DLL)
you wanted to use. E.g.

project w32n55 is
   for Externally_Built use "true";
   for Source_Files use ();
   for Library_Dir use "where the DLL resides";
   for Library_Name use "w32n55";
   for Library_Kind use "dynamic";
end w32n55;

Then you "with" this project in your project.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de


  reply	other threads:[~2015-12-08  9:52 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-26  7:56 Using Gnat.Sockets in a Windows DLL ahlan
2015-11-26  8:39 ` Dmitry A. Kazakov
2015-12-08  7:43 ` ahlan
2015-12-08  9:52   ` Dmitry A. Kazakov [this message]
2015-12-09  7:20 ` ahlan
2015-12-09  9:20   ` Dmitry A. Kazakov
2015-12-09 12:02 ` ahlan
2015-12-09 12:33   ` Dmitry A. Kazakov
2015-12-09 15:06 ` ahlan
2015-12-09 15:58   ` Dmitry A. Kazakov
2015-12-09 19:11   ` Simon Wright
2015-12-11 17:53 ` ahlan
2015-12-12 12:47   ` Simon Wright
2015-12-12 19:44     ` ahlan
2015-12-12 20:38       ` Simon Wright
2015-12-24 14:46 ` ahlan
2015-12-25 11:09   ` Simon Wright
2016-01-13 20:25 ` ahlan.marriott
2016-04-20 17:10   ` Dmitry A. Kazakov
2016-04-23  9:24     ` ahlan.marriott
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox