diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index e3bbf0f3..0d4768cd 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -28,7 +28,7 @@ target_link_libraries(exiv2 PRIVATE std::filesystem) if(MSVC OR MINGW) # Trick to get properly UTF-8 encoded argv # More info at: https://github.com/huangqinjin/wmain - add_library(wmain STATIC wmain.c) + add_library(wmain STATIC wmain.cpp) target_link_libraries(exiv2 PRIVATE wmain) endif() diff --git a/app/wmain.c b/app/wmain.cpp similarity index 64% rename from app/wmain.c rename to app/wmain.cpp index 89f406d0..a1fcfaf9 100644 --- a/app/wmain.c +++ b/app/wmain.cpp @@ -2,23 +2,23 @@ #include -extern int __cdecl main(); +extern int __cdecl main(int, char*[]); int wmain(int argc, wchar_t* argv[]) { char** args; - int nbytes = (int)(sizeof(char*) * (argc + 1)); + int nbytes = static_cast(sizeof(char*) * (argc + 1)); HANDLE heap = GetProcessHeap(); for (int i = 0; i < argc; ++i) - nbytes += WideCharToMultiByte(CP_UTF8, 0, argv[i], -1, NULL, 0, NULL, NULL); + nbytes += WideCharToMultiByte(CP_UTF8, 0, argv[i], -1, nullptr, 0, nullptr, nullptr); - args = HeapAlloc(heap, 0, nbytes); - args[0] = (char*)(args + argc + 1); + args = reinterpret_cast(HeapAlloc(heap, 0, nbytes)); + args[0] = reinterpret_cast(args + argc + 1); for (int i = 0; i < argc; ++i) - args[i + 1] = args[i] + WideCharToMultiByte(CP_UTF8, 0, argv[i], -1, args[i], nbytes, NULL, NULL); + args[i + 1] = args[i] + WideCharToMultiByte(CP_UTF8, 0, argv[i], -1, args[i], nbytes, nullptr, nullptr); - args[argc] = NULL; + args[argc] = nullptr; argc = main(argc, args); HeapFree(heap, 0, args);