Do I miss anything?
Yes! You are not understanding the role of C::B properly.
C::B is an IDE, which essentially helps you to communicate with compiler (which may be any) to compile a source. C::B doesn't bother what code you are putting in the source files and it sends the file in same condition to the compiler as you are supplying it.
There are more than 1 wxMenu constructor in main.h and the compiler doesn't know which one to choose. Am I right?
This is Unicode-related error so I think adding wxUSE_UNICODE must solve the problem.
Multiple wxMenu constructor is NOT a problem which is related to wxUSE_UNICODE (which essentially enables Unicode mode). It's your code which is the source of problem.
You can have multiple constructor of different wxMenu objects, but you can't construct the same object again and again in same piece of code. So it all depends on how you've crafted the code.
Sorry, C::B is not at fault in this case. C::B won't mess with or improve your buggy code.
BTW, looking at the error log, it seems that you are not wrapping
char* with
wxT() macro.
What I mean to say is if you have code similar to:
wxMenu* fileMenu = new wxMenu("My Menu");
Change it to:
wxMenu* fileMenu = new wxMenu(wxT("My Menu"));