Closed source D libraries
Benjamin Thaut
code at benjamin-thaut.de
Sun Jul 15 06:26:20 PDT 2012
Am 15.07.2012 15:06, schrieb Gor Gyolchanyan:
> On Sun, Jul 15, 2012 at 4:33 PM, Henning Pohl <henning at still-hidden.de
> <mailto:henning at still-hidden.de>> wrote:
>
> On Sunday, 15 July 2012 at 12:21:23 UTC, Gor Gyolchanyan wrote:
>
> On Sun, Jul 15, 2012 at 4:05 PM, Henning Pohl
> <henning at still-hidden.de <mailto:henning at still-hidden.de>>__wrote:
>
> Most closed source C and C++ libraries provide headers and
> binaries. It
> seems to me that there is no way to do this in D, because
> the source files
> always have to be available to import their modules.
>
> I'm not going to write something proprietary or closed
> source, but i
> wonder if others can do so.
>
>
> It's quite possible. All you have to do is make a module, which
> doesn't
> contain any function bodies. The imported modules aren't
> compiled with the
> code. Most of the time it's easier to have a single module to
> have both the
> code to compile and symbols to import. In other cases they can
> be separated.
>
>
> Okay, so it works just like in C:
>
> // The "header" file
> module lib;
>
> void printHelloWorld();
>
>
> // The "source" file
> module lib
> import std.stdio;
>
> void printHelloWorld() {
> writeln("Hello world!");
> }
>
>
> Exactly. Not defining a function body is perfectly fine for precisely
> these reasons. And, just like in C, forgetting to link with the missing
> body will result in a linker error.
>
> --
> Bye,
> Gor Gyolchanyan.
The compiler can even generate those files for using the -H option. It
will generate .di files. Although any formatting will get lost during
that process.
Kind Regards
Benjamin Thaut
More information about the Digitalmars-d
mailing list