MengRao / fmtlog

fmtlog is a performant fmtlib-style logging library with latency in nanoseconds.
MIT License
807 stars 124 forks source link

vs2022 上编译报错c2955 #47

Open zhangwen-sys opened 2 years ago

zhangwen-sys commented 2 years ago

错误 C2955 “fmt::v8::basic_format_args”: 使用 类 模板 需要 模板 参数列表 错误 C2955 “fmt::v8::basic_format_args”: 使用 类 模板 需要 模板 参数列表 错误 C2661 “fmtlogT<0>::vformat_to”: 没有重载函数接受 2 个参数

MengRao commented 2 years ago

能给出编译错误代码行号吗?

gh-andre commented 2 years ago

@zhangwen-sys

Try changing /std:c++latest to /std:c++17 in CMakeLists.txt, in this location.

if(MSVC)
    add_compile_options(/std:c++latest)
else()
    add_compile_options(-Wall -O3 -std=c++17)
    #add_compile_options(-Wall -Ofast -std=c++2a -march=skylake -flto -fno-exceptions -fno-rtti -fno-unwind-tables -fno-asynchronous-unwind-tables -DFMTLOG_NO_CHECK_LEVEL=1)
    #SET(CMAKE_AR  "gcc-ar")
    #SET(CMAKE_RANLIB  "gcc-ranlib")
    link_libraries(pthread)
endif()

The latest in VC++ introduces new constructs that may get in the way, like consteval.

longmao-yiran commented 1 year ago

@gh-andre I have tried but it doesn’t work

gh-andre commented 1 year ago

Works for me in this branch. The actions build it in VS2022 on Windows.

https://github.com/gh-andre/fmtlog/tree/v2-2-1-patches

xhd1221 commented 1 month ago

today I encountered this issue as well. i adjusted many things but the issue was still there. eventually, i realized that i was using C++ 14 which is the default C++ standard of VS 2022 project. after switched to C++ 17, everything goes fine.