diff --git a/.gitignore b/.gitignore index bd72186..3f9ae23 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ build/ +out/ cmake-build-*/ .cmake/ CMakeFiles/ @@ -24,3 +25,5 @@ Makefile *.dll *.exe *.out + +CMakeSettings.json diff --git a/nand_part_table_cvt.cc b/nand_part_table_cvt.cc index 53019c6..a67b6f0 100644 --- a/nand_part_table_cvt.cc +++ b/nand_part_table_cvt.cc @@ -299,13 +299,15 @@ int MainEntry(int argc, char** argv) { // The real main entry #if defined(_WIN32) || defined(_WIN64) -extern "C" void __wgetmainargs(int*, wchar_t***, wchar_t***, int, int*); +#include int main(int argc, char** argv) { - int argcW; - wchar_t** argvW; - wchar_t** envW; - __wgetmainargs(&argcW, &argvW, &envW, 0, nullptr); + int argcW = 0; + wchar_t** argvW = CommandLineToArgvW(GetCommandLineW(), &argcW); + if (argvW == nullptr) { + fmt::print("Unable to parse command line\n"); + return 1; + } std::vector args; args.reserve(argcW); for (int i = 0; i < argcW; i++) { @@ -316,6 +318,9 @@ int main(int argc, char** argv) { for (auto& arg: args) { argvC.push_back(arg.data()); } + LocalFree(argvW); + SetConsoleCP(CP_UTF8); + SetConsoleOutputCP(CP_UTF8); return MainEntry((int) argvC.size(), argvC.data()); }