Windows stdcall has (usually?) a name mangling that dlopen() needs to be aware of: a function "funcname()", instead of being called "funcname", ends up in the DLL under the name "_funcname@N", where N is apparently the stack displacement, at least on 32-bit.
From the mailing list (Xiaoqiang Wang):
""" I have just checked how ctypes.windll implements std call, it is like what you proposed, try and fail. http://hg.python.org/cpython/file/0eedac3d0b0a/Modules/_ctypes/_ctypes.c#l3092 """