On Wednesday, 11 June 2014 at 13:52:09 UTC, belkin wrote:
Example: I have this C function that is compiled into a library
//File: factorial.h
int factorial(int n);
//File: factorial.c
#include "factorial.h"
int factorial(int n)
{
if(n!=1)
return n*factorial(n-1);
}
Question: How do I use it from D?
//File: blah.d
extern(C) int factorial(int n); //coincidentally identical to the
C declaration.
void main()
{
assert(factorial(3) == 6);
}
$ gcc -c factorial.c -ofactorial.o
$ dmd blah.d factorial.o
$ ./blah
or
$ gcc -c factorial.c -ofactorial.o
$ ar rcs libfactorial.a factorial.o
$ dmd blah.d -L-lfactorial
$ ./blah
Basically, you just translate the header files from C to D, then
link to the C implementation. See
http://code.dlang.org/packages/dstep for automatic translation of
headers.