On 2013-05-14 15:53, Paolo & Kevin wrote:
I am trying to use a D shared library with a C program.
But I have a problem, the code works in a D program.
But it crashes as a library.


What I am doing wrong?
I think there is something the D language does before starting main.
And the C language does not. Can I initialize the program correctly
manually? Or it is another problem altogether?

The D runtime does quite a lot before running D main. You would need to a least initialize the runtime. Here's the C main function that is run before D main:

https://github.com/D-Programming-Language/druntime/blob/master/src/rt/dmain2.d#L384

Here's the function to you can call to initialize the runtime from C:

https://github.com/D-Programming-Language/druntime/blob/master/src/rt/dmain2.d#L281

And to terminate:

https://github.com/D-Programming-Language/druntime/blob/master/src/rt/dmain2.d#L312

I'm not sure if all this work yet. Using a D shared library from a D application, "statically" linked, should work on Linux 64bit. Don't know if it works from a C application.

--
/Jacob Carlborg

Reply via email to