Home >Backend Development >C++ >Why Does My MinGW C Project Throw an 'Undefined Reference to WinMain' Error When Using wWinMain?
Resolving Undefined Reference to WinMain Using wWinMain in MinGW (C )
When attempting to replace int main() with int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow) in a C application using MinGW as the compiler, users may encounter the "undefined reference to WinMain" error message. This error arises due to discrepancies between Visual C and MinGW's CRT startup libraries, which do not support the wWinMain entry point natively.
Solution:
For newer versions of MinGW, adding the -municode linker option to the command line, linker options in the IDE, or Makefile will enable the use of wWinMain.
g++ other_options_and_arguments -municode
However, for older versions of MinGW that lack support for -municode, the solution is to revert to using the standard WinMain function. In this case, the code can be modified as follows:
<code class="c++">int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR pCmdLine, int nCmdShow)</code>
Note:
While Visual C supports the wWinMain entry point where the "lpCmdLine" parameter is a "LPWSTR," it introduces additional complexity by requiring the use of preprocessor definitions and can be more cumbersome to work with. Therefore, it is recommended to use the standard WinMain function when working with MinGW unless the specific requirements of the program demand unicode command line usage.
The above is the detailed content of Why Does My MinGW C Project Throw an 'Undefined Reference to WinMain' Error When Using wWinMain?. For more information, please follow other related articles on the PHP Chinese website!