On Monday, 22 May 2017 at 01:39:04 UTC, evilrat wrote:
On Monday, 22 May 2017 at 01:27:22 UTC, Nicholas Wilson wrote:
Probably because the D side is expecting to have the struct
returned in a pointer allocated by the callee and then the C++
puts it in regs and BOOM.
If you wrap the C++ side to return the struct by a pointer
then use that in D, then it should work.
And this is actually D problem. In fact first bug report on
this thing was dated back to 2014. Still not fixed.
Thanks for your reply, do you have any links to some bug report
of that issue?
There is possible hacky workaround to try - put struct as
pointer arg instead of return and make helper method to use it,
like this
-------- HACK -------------------
// extern(C++) of course
void GetCursorPos(ImVec2* v);
// helper
ImVec2 GetCursorPos()
{
ImVec2 temp;
GetCursorPos(&temp);
return temp;
}
----------------------------------
Actually, your example would work just fine, my problem and
possible solution is the other way around :-). First I'll try to
force a copy with a wrapper func and same sig.