Found the issue. The gex was old and all the External Name fields were empty. I just set the External Name the same as the Name for all of the functions and now it works.
I'm a bit confused about distributing dlls. I know there are different architectures to worry about. I want to write a cross-platform game where players on mac, 32bit windows, 64bit windows, and linux can all play on the same server.
Will I need to build this dll for AMD 32 bit, 64bit and intel 32 bit, 64bit?
Also, I have seen dylibs for macs. Can this dll be compiled into one of those or is it a windows only dll?