I feel stupid posting a question and then replying with the solution. But, I found the problem so I might as well post it. Two switches needed to be added to the gcc command.
-Wl,--add-stdcall-alias This seems to export the function correctly, while the JNIEXPORT seems to do nothing at all. (-Wl,--kill-at seems to work as well. Anyone know what difference it makes beyond a smaller file?)
-mno-cygwin Without this, java exits abruptly with exit code 128 and no error messages. I presume this is a bug/issue with cygwin.