From 8fe8021f5a5b48520f9c1095e7cfa1fd416b6dfd Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Sun, 17 Nov 2024 22:49:16 +0900 Subject: [PATCH] Win32: Expose wchar main routine only Warned if both of `main` and `wmain` are exposed: ``` LINK : warning LNK4067: ambiguous entry point; selected 'mainCRTStartup' ``` --- main.c | 10 ++++++---- win32/winmain.c | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/main.c b/main.c index 5e29de8009..8b2252c2c5 100644 --- a/main.c +++ b/main.c @@ -48,6 +48,12 @@ int rb_wasm_rt_start(int (main)(int argc, char **argv), int argc, char **argv); #define rb_main(argc, argv) rb_wasm_rt_start(rb_main, argc, argv) #endif +#ifdef _WIN32 +#define main(argc, argv) w32_main(argc, argv) +static int main(int argc, char **argv); +int wmain(void) {return main(0, NULL);} +#endif + int main(int argc, char **argv) { @@ -62,10 +68,6 @@ main(int argc, char **argv) return rb_main(argc, argv); } -#ifdef _WIN32 -int wmain(void) {return main(0, NULL);} -#endif - #ifdef RUBY_ASAN_ENABLED /* Compile in the ASAN options Ruby needs, rather than relying on environment variables, so * that even tests which fork ruby with a clean environment will run ASAN with the right diff --git a/win32/winmain.c b/win32/winmain.c index 467a835d29..a9f38099db 100644 --- a/win32/winmain.c +++ b/win32/winmain.c @@ -1,10 +1,10 @@ #include #include -extern int main(int, char**); +extern int wmain(int, WCHAR**); int WINAPI WinMain(HINSTANCE current, HINSTANCE prev, LPSTR cmdline, int showcmd) { - return main(0, NULL); + return wmain(0, NULL); }