Okay, I found where the problem is. In my library, I kept the calling convention as "StdCall" and thought it would be seen as "CDecl", just like under Linux. My bad, sorry.
But there's something interesting. As long as the function name not begin with "L", the "StdCall" convention still compiles! I don't know why and what it output after compiling. Is it a bug or...?
Anyway, thanks Phil. You do me a favor again.
ChenYuChih