Using D within a rust codebase
Paul Backus
snarwin at gmail.com
Mon Jul 27 01:03:11 UTC 2020
On Sunday, 26 July 2020 at 21:18:19 UTC, powerboat9 wrote:
> I have an existing rust project, and I'm trying to rewrite part
> of it in D. However, I'm not sure how to get rust -> dlang
> interop working. I've looked into rust -> c -> dlang interop,
> but I'm not sure how to get c -> dlang interop working either.
Here's the basic approach:
1. Write an `extern(C)` function in D.
2. Write a corresponding declaration of that function in C
(typically, in a header file).
3. Use your D and C compilers to separately compile your D and C
source files, respectively.
4. Use your D compiler to link the resulting object files.
For example, given these source files:
--- lib.d
extern(C) void hello()
{
import std.stdio: writeln;
writeln("Hello from D!");
}
--- lib.h
void hello();
--- main.c
#include "lib.h"
void main()
{
hello();
}
...you can compile them with the following commands:
$ dmd -c lib.d # produces lib.o
$ gcc -c main.c # produces main.o
$ dmd main.o lib.o # produces main
You should now be able run `./main` and see it print "Hello from
D!"
More information about the Digitalmars-d-learn
mailing list