diff --git a/src/Main/MainGui.cpp b/src/Main/MainGui.cpp index 641268fcfd..5806630c69 100644 --- a/src/Main/MainGui.cpp +++ b/src/Main/MainGui.cpp @@ -204,6 +204,25 @@ int main( int argc, char ** argv ) _putenv("PYTHONPATH="); #endif +#if defined (FC_OS_WIN32) + int argc_ = argc; + QVector data; + QVector argv_; + + // get the command line arguments as unicode string + { + QCoreApplication app(argc, argv); + QStringList args = app.arguments(); + args.pop_front(); // remove 1st argument + argv_.push_back(argv[0]); + for (QStringList::iterator it = args.begin(); it != args.end(); ++it) { + data.push_back(it->toUtf8()); + argv_.push_back(data.back().data()); + } + argv_.push_back(0); // 0-terminated string + } +#endif + // Name and Version of the Application App::Application::Config()["ExeName"] = "FreeCAD"; App::Application::Config()["ExeVendor"] = "FreeCAD"; @@ -226,7 +245,11 @@ int main( int argc, char ** argv ) App::Application::Config()["RunMode"] = "Gui"; // Inits the Application - App::Application::init(argc,argv); +#if defined (FC_OS_WIN32) + App::Application::init(argc_, argv_.data()); +#else + App::Application::init(argc, argv); +#endif #if defined(_MSC_VER) // create a dump file when the application crashes std::string dmpfile = App::Application::getUserAppDataDir();