Beginner Question: Accesing a C .dll from D

Don Clugston dac at nospam.com.au
Tue Sep 12 04:46:05 PDT 2006


nobody wrote:
> cps wrote:
>> Hi,
>>
>> I'm a C/C++ programmer. I'm very interested in D.
>>
>> At the moment my work requires the use of libsndfile
>> (http://www.mega-nerd.com/libsndfile/). Am I right in thinking that I can
>> access Windows .dlls from D? If so, is there an example of how to do this
>> anywhere? Is this difficult to do?
>>
>> Cheers,
>>
>> Chris
> 
> You are correct that accessing Windows DLLs is possible in D. This page 
> should be a great place to start learning more:
> 
>   Writing Win32 DLLs in D
>   http://digitalmars.com/d/dll.html

That's about *writing* DLLs. Using them is much easier.
All you need to do is
(1) take the C header file (probably libsndfile.h), run htoD on it to 
make a D file (which will be called libsndfile.d).
(2) take the C import lib, and if it's a Microsoft COFF format library 
(almost all are), run coffimplib on it. Say this creates a file 
libsndfile.lib.

in libsndfile.d, add the line
pragma(lib, "libsndfile.lib");
so that you don't need to specify it on the command line.

Then your D program can just

import libsndfile;

Now go off and make some magic <g>.

P.S. you can download htod and coffimplib from the DigitalMars site.
Some links:
http://www.prowiki.org/wiki4d/wiki.cgi?DigitalMarsTools




More information about the Digitalmars-d-learn mailing list