Call delegate from C++

Jacob Carlborg doob at me.com
Wed Apr 24 17:38:00 UTC 2019


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


More information about the Digitalmars-d-learn mailing list