fix windows build
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
|
|
||||||
build/
|
build/
|
||||||
|
out/
|
||||||
cmake-build-*/
|
cmake-build-*/
|
||||||
.cmake/
|
.cmake/
|
||||||
CMakeFiles/
|
CMakeFiles/
|
||||||
@@ -24,3 +25,5 @@ Makefile
|
|||||||
*.dll
|
*.dll
|
||||||
*.exe
|
*.exe
|
||||||
*.out
|
*.out
|
||||||
|
|
||||||
|
CMakeSettings.json
|
||||||
|
|||||||
@@ -299,13 +299,15 @@ int MainEntry(int argc, char** argv) {
|
|||||||
// The real main entry
|
// The real main entry
|
||||||
#if defined(_WIN32) || defined(_WIN64)
|
#if defined(_WIN32) || defined(_WIN64)
|
||||||
|
|
||||||
extern "C" void __wgetmainargs(int*, wchar_t***, wchar_t***, int, int*);
|
#include <windows.h>
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
int argcW;
|
int argcW = 0;
|
||||||
wchar_t** argvW;
|
wchar_t** argvW = CommandLineToArgvW(GetCommandLineW(), &argcW);
|
||||||
wchar_t** envW;
|
if (argvW == nullptr) {
|
||||||
__wgetmainargs(&argcW, &argvW, &envW, 0, nullptr);
|
fmt::print("Unable to parse command line\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
std::vector<std::string> args;
|
std::vector<std::string> args;
|
||||||
args.reserve(argcW);
|
args.reserve(argcW);
|
||||||
for (int i = 0; i < argcW; i++) {
|
for (int i = 0; i < argcW; i++) {
|
||||||
@@ -316,6 +318,9 @@ int main(int argc, char** argv) {
|
|||||||
for (auto& arg: args) {
|
for (auto& arg: args) {
|
||||||
argvC.push_back(arg.data());
|
argvC.push_back(arg.data());
|
||||||
}
|
}
|
||||||
|
LocalFree(argvW);
|
||||||
|
SetConsoleCP(CP_UTF8);
|
||||||
|
SetConsoleOutputCP(CP_UTF8);
|
||||||
return MainEntry((int) argvC.size(), argvC.data());
|
return MainEntry((int) argvC.size(), argvC.data());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user