hkBattousai
hkBattousai

Reputation: 10931

How do I use the wmain() entry point in Code::Blocks?

I did a fresh install of Code::Blocks (I installed the one for Windows 7 which comes with GCC compiler (codeblocks-10.05mingw-setup.exe)). Then I tried to compile this very simple code:

int wmain(int argc, wchar_t* argv[])
{
    return 0;
}

I got this error message:

c:\development\ide\codeblocks\mingw\bin..\lib\gcc\mingw32\4.4.1......\libmingw32.a(main.o):main.c|| undefined reference to `WinMain@16'| ||=== Build finished: 1 errors, 0 warnings ===|

When I try to run my code with a main() entry, it runs as expected without any errors or warnings. How can I use wmain() in my code? What modifications do I have to do?

Upvotes: 9

Views: 3988

Answers (3)

user13947194
user13947194

Reputation: 400

Well mingw doesn't support wmain. And why would they. wide characters is a Microsoft Windows specific thing. On Windows You can use GetCommandLineW and CommandLineToArgV. On Linux I understand that Linux doesn't do encoding transformations on the command line arguments. And you can manually convert to UTF16LE by checking the current locale.

Upvotes: 0

XP1
XP1

Reputation: 7183

The latest solution is to use the -municode option instead of the mingw-unicode-main wrapper.

For details, see:

Upvotes: 9

Arnestig
Arnestig

Reputation: 2340

Mingw does not fully support unicode. There is a wrapper available if you feel like trying it out. https://github.com/coderforlife/mingw-unicode-main

Upvotes: 3

Related Questions