On Fri May 31 06:00:32 2024 +0000, Rémi Bernon wrote:
The build failure comes from `CreateDispatcherQueueController` taking a 12 byte struct as its first parameter by value. This needs 16 bytes on the stack, and the i386 stdcall export is supposed to be `CreateDispatcherQueueController@16` but with `(long ptr)` it ends up being `CreateDispatcherQueueController@8`. I don't know the proper fix for this, there are multiple options:
- Not build the module for win32, assuming it's not available on
Windows, (something like `enable_coremessaging=${enable_coremessaging:-aarch64,x86_64}` in `configure.ac` near `dnl *** Check for modules to disable by default`) 2) Use `@ stdcall CreateDispatcherQueueController(int128)` in the .spec, it's not exactly correct but it matches the stack size. I think the arguments are only needed for relay so that's maybe fine? 3) Keep it stub on 32bit, something like:
@ stdcall -arch=win64 CreateDispatcherQueueController(int128 ptr) @ stub -arch=win32 CreateDispatcherQueueController()
Looking at my Windows 10 installation I can see CoreMessaging.dll is present in both System32 and SysWOW64 (so not building it doesn't match Windows behavior) :frog: