Normally this means either that some parts of the source were compiled with #define UNICODE while others were not, or that something is wrong with the application type (Windows app vs. Console app).
Or maybe your prototype of wmain() is wrong (some arguments have the wrong type)

Explanation: __tmainCRTStartup is the main entry point for the runtime library. It is a combined ANSI/Unicode function (the "t" from "tmain") and it calls the unicode version of main() which on Windows is called wmain()