On Sun, 25 Feb 2024 07:15:35 -0800 (PST) Mike Rossiter wrote:
MR> Dan Dickey has tracked the problem down to the define wxHAS_RVALUE_REF. Not
MR> present in wxWidgets-3.2.2.1, I think.
Hello,
Thanks for tracking this down! The important part is this one:
> The import name shipdriver_pi.dll is seeking is "(__declspec(dllimport) public: class wxString & __thiscall wxString::operator=(class wxString &&))".
and it shows that we must be exporting wxString move assignment operator from the 3.2.4 DLL but (of course) not from 3.2.2 one, where it hadn't been defined.
I have to admit that I don't understand why isn't the compiler inlining this (very simple) function, as I'd expect it to, my thinking when backporting move-related changes to wx 3.2 was that they should be ABI-compatible because all the functions should be always inlined, but this clearly isn't the case and so we have to fix it.
My proposed fix is in
https://github.com/wxWidgets/wxWidgets/pull/24357 and your problem should be fixed if you
1. Cherry pick the first commit from it (
https://github.com/wxWidgets/wxWidgets/pull/24357/commits/54abbb3fc0b5563ef381e503f3791a4a60613d6d)
2. Define wxABI_VERSION=30202 when building your code.
Please let me know if this works for you, TIA!