Ok, I took another stab at this since I've had the problem
sitting for however many months and I think I finally got it
figured out. I needed to reimport the import library from the
DLL (via implib.exe) WITHOUT the /system switch, then, on
inspecting it, it appears the correct function names to use are
FMOD5_* rather than FMOD_*.
So,
FMOD_RESULT FMOD_System_CreateSound(FMOD_SYSTEM *system, const
char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO
*exinfo, FMOD_SOUND **sound);
becomes
pragma(mangle, "FMOD5_System_CreateSound")
FMOD_RESULT FMOD_System_CreateSound(FMOD_SYSTEM *system, const
char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO
*exinfo, FMOD_SOUND **sound);
or this would also work of course:
FMOD_RESULT FMOD5_System_CreateSound(FMOD_SYSTEM *system, const
char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO
*exinfo, FMOD_SOUND **sound);
alias FMOD5_System_CreateSound FMOD_System_CreateSound;
Now it finally links and the stack is no longer being corrupted!