On 10/13/20 5:46 PM, Pierre Lamot wrote: >>> While I have no clear idea about the cause of the issue, my gut >>> feeling is that it happens with overloaded functions. In above case: >>> >>> STDMETHOD(SetOffsetX)(THIS_ float) PURE; >>> STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE; >> >> That's right, overloads like that appear in reversed order in actual >> vtable. So method with float arg gets higher address. >> > > So, does inverting the declaration order of these methods would do the > tricks? > This is quite surprising to declare member functions in different > order according to the compiler. It would, yes. We use that for similar cases in Wine, which does not use C++, making that solution binary compatible.
As I understand it's an c++ abi difference between msvc and g++, or maybe between msvc and everything else. > > Pierre _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public