Passing C++ class to DLL for callbacks from D (Steam)

cc cc at nevernet.com
Sun Jun 10 01:35:40 UTC 2018


On Saturday, 9 June 2018 at 14:11:13 UTC, evilrat wrote:
> However steam devs decided to shield actual pointer and return 
> pointer sized integer when C API is used(or they just screw 
> up?). Anyway, the pointers for subsystems returned by context 
> calls on C++ API and mirrored C API calls are different, but 
> they also have some mechanism for filtering this stuff, that 
> way both integer handle and pointer calls the same underlying 
> implementation, but C API call again is shielded so setting up 
> CallResult and CCallback are ignored.
>
>
> So my solution was just to make simple wrapper around C++ 
> context calls and pass that real pointer to D side.

I see, thank you for checking it out.  Is it only the functions 
that return the interface pointers e.g. ISteamUserStats that need 
to be wrapped to use the class-based versions instead of the 
steam_api_flat versions?  Or does the entire callback system need 
to be handled through the wrapper?


More information about the Digitalmars-d-learn mailing list