I notice I've skipped the main reason.
What I'd like to do is build libraries in D that I can call from
multiple languages. C, Python, C++, Ada, Fortran, Lisp, whatever. Just
about every language has a C interface. So if I can call the library
from C, then I can call it from anywhere. (Possibly except D. Not sure
about that, but I think the runtime functions might clash.)
On 07/19/2011 04:48 PM, Andrej Mitrovic wrote:
See if this works for you:
import core.runtime;
void myMainFunc()
{
}
extern (C)
int initializeDee()
{
int result;
void exceptionHandler(Throwable e) { throw e; }
try
{
Runtime.initialize(&exceptionHandler);
result = myMainFunc();
Runtime.terminate(&exceptionHandler);
}
catch (Throwable o)
{
result = 0;
}
return result;
}
This is similar to how it's done for Windows GUI applications, where
we have to manually run the initialize function in druntime (unless
it's hidden by some GUI framework).