Thanks for so detailed an answer ! A few followup questions:
How do you dump a DLL in such way ? I want to examine mine and see if there's name mangling.
My DLL has no DEF file with it (it has a LIB file for linking from C++) and its .h file just places WINAPI as I demonstrated, so I guess I can't know which compiler options were enabled. Though I'm pretty sure it was compiled with a MS compiler.
So is there a chance to successfully call functions from the DLL if it was compiled with _cdecl ?
I get a segfault when I declare the arguments / return value as SHORT, but don't get it when I declare them INT. How can this be affected by what you described ?
Finally: will all the same problems surface using an XS wrapper for the DLL ?