Skip to content

Commit 8fe8021

Browse files
committed
Win32: Expose wchar main routine only
Warned if both of `main` and `wmain` are exposed: ``` LINK : warning LNK4067: ambiguous entry point; selected 'mainCRTStartup' ```
1 parent 36d02dc commit 8fe8021

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

main.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ int rb_wasm_rt_start(int (main)(int argc, char **argv), int argc, char **argv);
4848
#define rb_main(argc, argv) rb_wasm_rt_start(rb_main, argc, argv)
4949
#endif
5050

51+
#ifdef _WIN32
52+
#define main(argc, argv) w32_main(argc, argv)
53+
static int main(int argc, char **argv);
54+
int wmain(void) {return main(0, NULL);}
55+
#endif
56+
5157
int
5258
main(int argc, char **argv)
5359
{
@@ -62,10 +68,6 @@ main(int argc, char **argv)
6268
return rb_main(argc, argv);
6369
}
6470

65-
#ifdef _WIN32
66-
int wmain(void) {return main(0, NULL);}
67-
#endif
68-
6971
#ifdef RUBY_ASAN_ENABLED
7072
/* Compile in the ASAN options Ruby needs, rather than relying on environment variables, so
7173
* that even tests which fork ruby with a clean environment will run ASAN with the right

win32/winmain.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#include <windows.h>
22
#include <stdio.h>
33

4-
extern int main(int, char**);
4+
extern int wmain(int, WCHAR**);
55

66
int WINAPI
77
WinMain(HINSTANCE current, HINSTANCE prev, LPSTR cmdline, int showcmd)
88
{
9-
return main(0, NULL);
9+
return wmain(0, NULL);
1010
}

0 commit comments

Comments
 (0)