Beginner Question: Accesing a C .dll from D
Sean Kelly
sean at f4.ca
Tue Sep 12 08:19:51 PDT 2006
Don Clugston wrote:
> 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>.
Just a quick note--for pragma(lib) to work, you must build the module
containing the pragma into your program. Build does this automatically,
but DMD/GDC do not :-)
Sean
More information about the Digitalmars-d-learn
mailing list