You can try this right now.
Define both WinMain and wWinMain abd compile it as a static library.
Make a new project for executable file exe.
Set character set setting UNICODE system.(define _UNICODE)
Link the static library just made.
Then your program starts from WinMain.
Whether the character set is multi-byte or unicode, WinMain is called, when both WinMain and wWinMain is defined.
It happens only when you define WinMain in a static library.
When you define WinMain and wWinMain in a source project including, it works correctly,
unicode system calls wWinMain and multi-byte system calls WinMain.
Why does it happen?