On 2019-04-24 18:20, Nicholas Wilson wrote:
How do you pass a delegate to a c++ function to be called by it?

The function to pass the delegate to is:

extern (C++) int
fakeEntrypoint(
     extern(C++) void function(void* /*delegate's context*/) func,
     void* /*delegate's context*/ arg);


What I want is:

int entrypoint(scope void delegate() func)
{
     return fakeEntrypoint(
                 // for some reason func.funcptr is void function()
                 cast(void function(void*))func.funcptr,
                 func.ptr);
}

but that fails with

cannot pass argument cast(void function(void*))func.funcptr of type
void function(void*) to parameter extern (C++) void function(void*) func

You probably need to include `extern(C++)` in the cast, if that's possible.

--
/Jacob Carlborg

Reply via email to