worawit / blutter

Flutter Mobile Application Reverse Engineering Tool
MIT License
752 stars 128 forks source link

compile error on windows with vs 2022: error C7555 #57

Closed coderiderlin closed 3 months ago

coderiderlin commented 3 months ago

exception detail:

Dart version: 2.15.0, Snapshot: adf563436d12ba0d50ea5beb7f3be1bb, Target: android arm64
flags: product no-code_comments no-dwarf_stack_traces_mode lazy_async_stacks no-lazy_dispatchers use_bare_instructions dedup_instructions no-asserts arm64-sysv compressed-pointers no-null-safety
-- Configuring done (2.8s)
-- Generating done (0.1s)
-- Build files have been written to: D:/projects/blutter/build/dartvm2.15.0_android_arm64
[87/255] Building CXX object CMakeFiles\dartvm2.15.0_android_arm64.dir\runtime\vm\message_snapshot.cc.obj
FAILED: CMakeFiles/dartvm2.15.0_android_arm64.dir/runtime/vm/message_snapshot.cc.obj
C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1439~1.335\bin\Hostx64\x64\cl.exe  /nologo /TP -DDART_COMPRESSED_POINTERS -DDART_PRECOMPILED_RUNTIME -DDART_TARGET_OS_ANDROID -DDART_TARGET_OS_WINDOWS_UWP -DEXCLUDE_CFE_AND_KERNEL_PLATFORM -DNDEBUG -DPRODUCT -DTARGET_ARCH_ARM64 -DU_USING_ICU_NAMESPACE=0 -D_HAS_EXCEPTIONS=0 -ID:\projects\blutter\dartsdk\v2.15.0\runtime -ID:\projects\blutter\external\icu-windows\include /DWIN32 /D_WINDOWS  /O2 /Ob2 /DNDEBUG -std:c++17 -MD /Oy /GR- /EHs-c- /showIncludes /FoCMakeFiles\dartvm2.15.0_android_arm64.dir\runtime\vm\message_snapshot.cc.obj /FdCMakeFiles\dartvm2.15.0_android_arm64.dir\dartvm2.15.0_android_arm64.pdb /FS -c D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(30): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(29): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(31): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(32): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(36): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(36): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(35): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(38): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(37): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(42): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(42): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(41): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(43): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(44): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(45): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(48): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(47): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(50): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
D:\projects\blutter\dartsdk\v2.15.0\runtime\vm\message_snapshot.cc(49): error C7555: 使用指定的初始值设定项至少需要“/std:c++20”
[104/255] Building CXX object CMakeFiles\dartvm2.15.0_android_arm64.dir\runtime\vm\object.cc.obj
ninja: build stopped: subcommand failed.
Traceback (most recent call last):
  File "D:\projects\blutter\blutter.py", line 168, in <module>
    main(args.indir, args.outdir, args.rebuild, args.vs_sln, args.no_analysis)
  File "D:\projects\blutter\blutter.py", line 130, in main
    fetch_and_build(dart_version, arch, os_name, has_compressed_ptrs, snapshot_hash)
  File "D:\projects\blutter\dartvm_fetch_build.py", line 120, in fetch_and_build
    cmake_dart(ver, arch, os_name, has_compressed_ptrs, outdir)
  File "D:\projects\blutter\dartvm_fetch_build.py", line 115, in cmake_dart
    subprocess.run([NINJA_CMD], cwd=builddir, check=True)
  File "C:\Python311\Lib\subprocess.py", line 569, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['ninja']' returned non-zero exit status 1.
coderiderlin commented 3 months ago

well,I found that the CXX_STANDARD was set to 17 in the CMakeLists.txt . After changing it to 20, the compilation proceeded successfully.

note:there is a comment above this line ,however ,it's not working on my situation.

use C++17 because compilation with c++20 is slower

# use C++17 because compilation with c++20 is slower
set_target_properties(${LIBNAME} PROPERTIES
    CXX_STANDARD 20  # problem caused by here
    CXX_STANDARD_REQUIRED True