Для простых вещей просто ссылка на libphobos:
$ cat main.cpp
#include <stdio.h>
void foo(int num)
{
//Does the FizzBuzz program
for(int i = 0; i < num; i++){
if(i%3 == 0)
printf("fizz\n");
if(i%5 == 0)
printf("buzz\n");
if(i%3 == 0 && num%5 == 0)
printf("Fizzbuzz\n");
}
}
void bar();
int main()
{
bar();
return 0;
}
$ cat foobar.d
extern(C++) int foo(int i);
extern(C++) void bar()
{
foo(100);
}
$ dmd -c foobar.d
$ g++ main.cpp foobar.o -lphobos2
$ ./a.out | head
fizz
buzz
Fizzbuzz
fizz
Fizzbuzz
buzz
fizz
Fizzbuzz
fizz
Fizzbuzz
Это становится более сложным, если для работы кода D требуется среда выполнения D, например использование сборки мусора, и в этом случае время выполнения должно быть явно инициализировано.