On Wednesday, 24 April 2019 at 16:20:17 UTC, 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
It's clear that your delegate is not extern C++
int entrypoint(scope extern(C++) void delegate() func)