How to compile Phobos with other D code to create a shared library?

data pulverizer data.pulverizer at gmail.com
Mon May 31 19:21:52 UTC 2021


Hi,

I am trying to compile D code to a shared library to be called by 
another language (in this case Julia). I can get a basic call to 
work but I can't call functions that use Phobos (I have no idea 
how to compile against it). I have found some documentation 
[here](https://github.com/mesonbuild/meson/issues/6786) and 
[here](https://dlang.org/articles/dll-linux.html) that lists 
compilation against specific flags so for instance I have tried:

```
ldc2 jbasic.d -O3 -link-defaultlib-shared --betterC 
--boundscheck=off -nogc -shared -of=jbasic.so
```

But in Julia (and the equivalent thing happens in  R), when I 
attempt to load the function I get an error:

```
ERROR: could not load library "./jbasic.so"
./jbasic.so: undefined symbol: 
_D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt6__initZ
```

I tried the equivalent with `dmd`:

```
dmd jbasic.d -O -defaultlib=libphobos2.so -betterC -fPIC 
-boundscheck=off  -shared -of=jbasic.so
```

with the same result.


Thank you.






More information about the Digitalmars-d-learn mailing list