D Newbie Trying to Use D with Major C Libraries
Gary Willoughby via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri May 16 11:05:48 PDT 2014
On Thursday, 15 May 2014 at 22:25:47 UTC, Tom Browder via
Digitalmars-d-learn wrote:
> I am a volunteer developer with the well-known 3D CAD FOSS
> project BRL-CAD:
>
> http://brlcad.org
>
> I have wanted to use D for a long time but I hadn't taken the
> plunge.
> Yesterday I advertised to the BRL-CAD community my new project
> to
> attempt to create D bindings for BRL-CAD's C libraries, and I
> created
> a branch for the project.
>
> I have been looking for specific information on creating D
> bindings
> from C headers for which there seems to be sufficient
> information
> available, but I would appreciate recommendations as to the best
> method. I have successfully built my first pure D program but
> now
> need to test the feasibility of my project.
>
> What I have not seen yet is the exact way to build a D program
> which
> uses D bindings and its matching C library. I have just
> created a
> Cookbook page on the D Wiki where I show my first attempt for a
> real
> GNU Makefile as an example for the project. The page link is
> here:
>
> http://wiki.dlang.org/Using_C_libraries_for_a_D_program
>
> I would appreciate it if an experienced D user would correct
> that
> recipe so it should compile the desired binary source correctly
> (assuming no errors in the input files).
>
> Thanks for any help.
>
> Best regards,
>
> -Tom
For a start use dub to build D projects, it's becoming the
de-facto build tool.
http://code.dlang.org/
Then take a look at one of my projects in which i've ported C
headers to D.
https://github.com/nomad-software/tcltk
In that repo i've included all the C headers as well as their D
counterparts for reference. Converting headers is not
straightforward when you first start but once you understand the
rules it gets easier. Here's some helpful links:
http://dlang.org/interfaceToC.html
http://www.gamedev.net/page/resources/_/technical/game-programming/binding-d-to-c-r3122
http://forum.dlang.org/thread/qvjjzoxoufxnxzokywgq@forum.dlang.org
http://forum.dlang.org/thread/wmzqweodmbpkfjbvevcc@forum.dlang.org
http://forum.dlang.org/thread/fzqloumcqbdvnccvacpi@forum.dlang.org
Once the D file is created and imported into your program you
just need to link the necessary library and you're good to go.
See the `package.json` file in the above repository for how i do
it for Posix and Windows. Windows DLL's are supplied in the
`dist` directory.
More information about the Digitalmars-d-learn
mailing list