aLVINlEE9 opened a new issue, #47590:
URL: https://github.com/apache/arrow/issues/47590

   ### Describe the bug, including details regarding any error messages, 
version, and platform.
   
   ## Description
   Build fails on Windows 11 with MSVC when UNICODE is defined. The problem is 
that some code uses `CreateFileW` explicitly while others use generic names 
like `GetModuleHandle` and `CreateFileMapping` without proper string literals.
   
   ## Environment
   - Windows 11
   - MSVC 2022 Community  
   - CMake + Ninja
   - Debug build with UNICODE/_UNICODE
   
   ## Steps to Reproduce
   1. Clone Apache Arrow repository
   2. Configure with CMake on Windows with UNICODE defined:
      ```
      cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug ..
      ```
   3. Build with ninja:
      ```
      ninja
      ```
   
   ## Error
   ```
   [167/254] Building CXX object 
third_party\arrow\cpp\src\arrow\CMakeFiles\arrow_util_static.dir\util\cpu_info.cc.obj
   FAILED: 
third_party/arrow/cpp/src/arrow/CMakeFiles/arrow_util_static.dir/util/cpu_info.cc.obj
   
C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1444~1.352\bin\Hostx64\x64\cl.exe
  /nologo /TP -DARROW_HAVE_AVX2 -DARROW_HAVE_BMI2 -DARROW_HAVE_RUNTIME_AVX2 
-DARROW_HAVE_RUNTIME_AVX512 -DARROW_HAVE_RUNTIME_BMI2 
-DARROW_HAVE_RUNTIME_SSE4_2 -DARROW_HAVE_SSE4_2 -DARROW_STATIC 
-DBOOST_ALL_NO_LIB -DBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS 
-DBOOST_MP_STANDALONE=1 -DUNICODE -DURI_STATIC_BUILD -DWIN32 
-D_CRT_SECURE_NO_WARNINGS -D_M_X64 -D_UNICODE 
-IC:\Users\user\Workspace\Project\build\win-x64-data\third_party\arrow\cpp\src 
-IC:\Users\user\Workspace\Project\third_party\arrow\cpp\src 
-IC:\Users\user\Workspace\Project\third_party\arrow\cpp\src\generated 
-IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\lz4-src\build\cmake\..\..\lib
 -external:I"C:\Program Files\Microsoft Visual 
Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include" -external:I"C:\Program 
Files\Microsoft Visual 
Studio\2022\Community\VC\Tools\MSVC\14.44.35207\ATLMFC\include" 
-external:I"C:\Program Files\Microsoft Visu
 al Studio\2022\Community\VC\Auxiliary\VS\include" -external:I"C:\Program Files 
(x86)\Windows Kits\10\include\10.0.26100.0\ucrt" -external:I"C:\Program Files 
(x86)\Windows Kits\10\include\10.0.26100.0\um" -external:I"C:\Program Files 
(x86)\Windows Kits\10\include\10.0.26100.0\shared" -external:I"C:\Program Files 
(x86)\Windows Kits\10\include\10.0.26100.0\winrt" -external:I"C:\Program Files 
(x86)\Windows Kits\10\include\10.0.26100.0\cppwinrt" 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\headers\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\algorithm\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\array\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\assert\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\config\include
 -external:IC:\Users\user\Workspace\Project\build\win-x64-da
 ta\_deps\boost-src\libs\static_assert\include 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\throw_exception\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\bind\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\core\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\concept_check\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\preprocessor\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\type_traits\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\exception\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\smart_ptr\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\tuple\include
 -external:IC:\Users\user\Workspace\Projec
 t\build\win-x64-data\_deps\boost-src\libs\function\include 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\iterator\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\detail\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\fusion\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\container_hash\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\describe\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\mp11\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\function_types\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\mpl\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\predef\include
 -external:IC:\Users\user\Workspace\Projec
 t\build\win-x64-data\_deps\boost-src\libs\utility\include 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\io\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\typeof\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\functional\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\optional\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\range\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\conversion\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\regex\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\unordered\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\crc\include
 -external:IC:\Users\user\Workspace\Project\build\win-
 x64-data\_deps\boost-src\libs\scope_exit\include 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\tokenizer\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\uuid\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\numeric\conversion\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\multiprecision\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\third_party\arrow\cpp\xsimd_ep\src\xsimd_ep-install\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\third_party\arrow\cpp\snappy_ep\src\snappy_ep-install\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\third_party\arrow\cpp\rapidjson_ep\src\rapidjson_ep-install\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\third_party\arrow\cpp\zlib_ep\src\zlib_ep-install\include
 -external:IC:\Users\user\Workspace\Proj
 ect\build\win-x64-data\third_party\arrow\cpp\zstd_ep-install\include 
-external:W0 /MP /EHsc /GR /utf-8 /DWIN32 /D_WINDOWS /EHsc 
/D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING /W3 /EHsc /wd5105 /bigobj /utf-8 
/W3 /wd4365 /wd4267 /wd4838 /wd4800 /wd4996 /wd4065 /arch:AVX2  /Od /Ob0 /RTC1 
/MDd /D_DEBUG /JMC /WX -std:c++latest -MDd -ZI /showIncludes 
/Fothird_party\arrow\cpp\src\arrow\CMakeFiles\arrow_util_static.dir\util\cpu_info.cc.obj
 /Fdthird_party\arrow\cpp\src\arrow\CMakeFiles\arrow_util_static.dir\ /FS -c 
C:\Users\user\Workspace\Project\third_party\arrow\cpp\src\arrow\util\cpu_info.cc
   
C:\Users\user\Workspace\Project\third_party\arrow\cpp\src\arrow\util\cpu_info.cc(85):
 error C2664: 'HMODULE GetModuleHandleW(LPCWSTR)': cannot convert argument 1 
from 'const char [9]' to 'LPCWSTR'
   
C:\Users\user\Workspace\Project\third_party\arrow\cpp\src\arrow\util\cpu_info.cc(85):
 note: Types pointed to are unrelated; conversion requires reinterpret_cast, 
C-style cast or parenthesized function-style cast
   C:\Program Files (x86)\Windows 
Kits\10\include\10.0.26100.0\um\libloaderapi.h(245): note: see declaration of 
'GetModuleHandleW'
   
C:\Users\user\Workspace\Project\third_party\arrow\cpp\src\arrow\util\cpu_info.cc(85):
 note: while trying to match the argument list '(const char [9])'
   [188/254] Building CXX object 
third_party\arrow\cpp\src\arrow\CMakeFiles\arrow_util_static.dir\util\decimal.cc.obj
   ninja: build stopped: subcommand failed.
   ```
   
   ```
   
C:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\iterator\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\detail\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\fusion\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\container_hash\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\describe\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\mp11\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\function_types\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\mpl\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\predef\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\utility\include
 -external:
 
IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\io\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\typeof\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\functional\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\optional\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\range\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\conversion\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\regex\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\unordered\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\crc\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\scope_exit\include
 -external:IC:\Users
 
\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\tokenizer\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\uuid\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\numeric\conversion\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\_deps\boost-src\libs\multiprecision\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\third_party\arrow\cpp\xsimd_ep\src\xsimd_ep-install\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\third_party\arrow\cpp\snappy_ep\src\snappy_ep-install\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\third_party\arrow\cpp\rapidjson_ep\src\rapidjson_ep-install\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\third_party\arrow\cpp\zlib_ep\src\zlib_ep-install\include
 
-external:IC:\Users\user\Workspace\Project\build\win-x64-data\third_party\arrow\cpp\zstd_ep-install\include
  -external:W0 /MP /EHsc /GR /utf-8 /DWIN32 /D_WINDOWS /EHsc 
/D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING /W3 /EHsc /wd5105 /bigobj /utf-8 
/W3 /wd4365 /wd4267 /wd4838 /wd4800 /wd4996 /wd4065 /arch:AVX2  /Od /Ob0 /RTC1 
/MDd /D_DEBUG /JMC /WX -std:c++latest -MDd -ZI /showIncludes 
/Fothird_party\arrow\cpp\src\arrow\CMakeFiles\arrow_util_static.dir\util\io_util.cc.obj
 /Fdthird_party\arrow\cpp\src\arrow\CMakeFiles\arrow_util_static.dir\ /FS -c 
C:\Users\user\Workspace\Project\third_party\arrow\cpp\src\arrow\util\io_util.cc
   
C:\Users\user\Workspace\Project\third_party\arrow\cpp\src\arrow\util\io_util.cc(1450):
 error C2664: 'HANDLE 
CreateFileMappingW(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCWSTR)': 
cannot convert argument 6 from 'const char [1]' to 'LPCWSTR'
   
C:\Users\user\Workspace\Project\third_party\arrow\cpp\src\arrow\util\io_util.cc(1450):
 note: Types pointed to are unrelated; conversion requires reinterpret_cast, 
C-style cast or parenthesized function-style cast
   C:\Program Files (x86)\Windows 
Kits\10\include\10.0.26100.0\um\memoryapi.h(176): note: see declaration of 
'CreateFileMappingW'
   
C:\Users\user\Workspace\Project\third_party\arrow\cpp\src\arrow\util\io_util.cc(1450):
 note: while trying to match the argument list '(HANDLE, int, int, int, int, 
const char [1])'
   [22/68] Building CXX object 
third_party\arrow\cpp\src\arrow\CMakeFiles\arrow_util_static.dir\util\ree_util.cc.obj
   ninja: build stopped: subcommand failed.
   ```
   
   ## Problem
   
   The codebase is inconsistent with Windows APIs:
   
   Some files use explicit W versions:
   ```cpp
   HANDLE file_handle = CreateFileW(file_name.ToNative().c_str(), GENERIC_READ, 
...
   ```
   
   But others don't:
   ```cpp
   // cpu_info.cc line 85
   GetModuleHandle("kernel32")  // needs L"kernel32"
   
   // io_util.cc line 1450  
   CreateFileMapping(h, NULL, PAGE_READWRITE, 0, 0, "")  // needs L""
   ```
   
   ## Fix
   Just need to add L prefix to string literals:
   - `GetModuleHandle(L"kernel32")` 
   - `CreateFileMapping(h, NULL, PAGE_READWRITE, 0, 0, L"")`
   
   After these changes, build works fine.
   
   Either use explicit A/W versions everywhere or use TEXT() macro 
consistently. Right now it's a mix that breaks depending on build settings.
   
   ### Component(s)
   
   C++


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to