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
next prev parent 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