Ошибка компиляции Telegram Desktop
всем привета, хотел скомпилировать ТГ десктоп версию под винду 10, 64 бит, визуал студио 2022. а в ответ мне идут большущие логи, скоротал начало под лимит, ошибка при использовании ninja. cmake идет успешно, tg_owt
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
-- The C compiler identification is MSVC 19.38.33133.0
-- Build files have been written to: C:/TBuild/Libraries/win64/tg_owt/out/Debug
C:\TBuild\Libraries\win64\tg_owt\src\api/array_view.h(162): error C2676: бинарный "<<": "rtc::webrtc_checks_impl::LogStreamer<>" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(243): note: может быть "rtc::webrtc_checks_impl::LogStreamer<V> rtc::webrtc_checks_impl::LogStreamer<>::operator <<(const U &) const"
C:\TBuild\Libraries\win64\tg_owt\src\api/array_view.h(162): note: "rtc::webrtc_checks_impl::LogStreamer<V> rtc::webrtc_checks_impl::LogStreamer<>::operator <<(const U &) const": не удается вывести аргумент шаблон для "V"
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(235): note: или "rtc::webrtc_checks_impl::LogStreamer<V> rtc::webrtc_checks_impl::LogStreamer<>::operator <<(U) const"
C:\TBuild\Libraries\win64\tg_owt\src\api/array_view.h(162): note: "rtc::webrtc_checks_impl::LogStreamer<V> rtc::webrtc_checks_impl::LogStreamer<>::operator <<(U) const": не удается вывести аргумент шаблон для "V"
C:\TBuild\Libraries\win64\tg_owt\src\api/array_view.h(162): note: контекст создания экземпляра шаблона (сначала самый старый)
C:\TBuild\Libraries\win64\tg_owt\src\modules/audio_processing/aec3/block.h(62): note: выполняется компиляция ссылки на экземпляр шаблон функции "rtc::ArrayView<float,64>::ArrayView<_Ty>(U *,size_t)"
with
[
_Ty=float,
U=float
]
C:\TBuild\Libraries\win64\tg_owt\src\modules/audio_processing/aec3/block.h(62): note: см. первую ссылку на "rtc::ArrayView<float,64>::ArrayView" в "webrtc::Block::View"
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(288): error C2440: <function-style-cast>: невозможно преобразовать "initializer list" в "rtc::webrtc_checks_impl::LogStreamer<rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>,T>"
with
[
T=rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>
]
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(288): note: "rtc::webrtc_checks_impl::LogStreamer<rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>,T>::LogStreamer": ни одна перегруженная функция не может преобразовать все типы аргументов
with
[
T=rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>
]
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(280): note: может быть "rtc::webrtc_checks_impl::LogStreamer<rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>,T>::LogStreamer(T,const rtc::webrtc_checks_impl::LogStreamer<rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>> *)"
with
[
T=rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>
]
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(288): note: "rtc::webrtc_checks_impl::LogStreamer<rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>,T>::LogStreamer(T,const rtc::webrtc_checks_impl::LogStreamer<rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>> *)": невозможно преобразовать аргумент 1 из "rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kInt,int>" в "T"
with
[
T=rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>
]
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(288): note: Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(288): note: при попытке сопоставить список аргументов "(rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kInt,int>, const rtc::webrtc_checks_impl::LogStreamer<rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>> *)"
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(288): note: контекст создания экземпляра шаблона (сначала самый старый)
C:\TBuild\Libraries\win64\tg_owt\src\modules/audio_processing/aec3/block_buffer.h(41): note: выполняется компиляция ссылки на экземпляр шаблон функции "rtc::webrtc_checks_impl::LogStreamer<rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>,T> rtc::webrtc_checks_impl::LogStreamer<rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>>::operator <<<int,rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>,0x0>(U) const"
with
[
T=rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>,
U=int
]
C:\TBuild\Libraries\win64\tg_owt\src\modules/audio_processing/aec3/block_buffer.h(41): note: см. первую ссылку на "rtc::webrtc_checks_impl::LogStreamer<rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>>::operator <<" РІ "webrtc::BlockBuffer::OffsetIndex"
[52/1380] Building CXX object CMakeFiles\tg_owt_avx2.dir\s...ules\audio_processing\agc2\rnn_vad\vector_math_avx2.cc.obj
FAILED: CMakeFiles/tg_owt_avx2.dir/src/modules/audio_processing/agc2/rnn_vad/vector_math_avx2.cc.obj
C:\PROGRA~1\MICROS~2\2022\COMMUN~1\VC\Tools\MSVC\1438~1.331\bin\Hostx64\x64\cl.exe /nologo /TP -DABSL_ALLOCATOR_NOTHROW=1 -DBWE_TEST_LOGGING_COMPILE_TIME_ENABLE=0 -DHAVE_SCTP -DHAVE_SSE2 -DHAVE_WEBRTC_VIDEO -DHAVE_WINDOWS_H -DHAVE_WINSOCK2_H -DHAVE_X86 -DNOMINMAX -DNO_MAIN_THREAD_WRAPPING -DRTC_DISABLE_TRACE_EVENTS -DRTC_ENABLE_H265 -DRTC_ENABLE_VP9 -DRTC_ENABLE_WIN_WGC -DWEBRTC_APM_DEBUG_DUMP=0 -DWEBRTC_DUMMY_AUDIO_BUILD -DWEBRTC_ENABLE_PROTOBUF=0 -DWEBRTC_HAVE_DCSCTP -DWEBRTC_HAVE_SCTP -DWEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE -DWEBRTC_LIBRARY_IMPL -DWEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=1 -DWEBRTC_OPUS_SUPPORT_120MS_PTIME=1 -DWEBRTC_OPUS_VARIABLE_COMPLEXITY=0 -DWEBRTC_USE_BUILTIN_ISAC_FLOAT -DWEBRTC_USE_H264 -DWEBRTC_WIN -DWIN32_LEAN_AND_MEAN -IC:\TBuild\Libraries\win64\tg_owt\src -IC:\TBuild\Libraries\win64\tg_owt\src\third_party\libyuv\include -IC:\TBuild\Libraries\win64\tg_owt\src\third_party\abseil-cpp /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -std:c++20 -MTd /W1 /wd4715 /wd4244 /wd4838 /wd4305 /wd4068 /wd5055 /MP /EHsc /arch:AVX2 /showIncludes /FoCMakeFiles\tg_owt_avx2.dir\src\modules\audio_processing\agc2\rnn_vad\vector_math_avx2.cc.obj /FdCMakeFiles\tg_owt_avx2.dir\ /FS -c C:\TBuild\Libraries\win64\tg_owt\src\modules\audio_processing\agc2\rnn_vad\vector_math_avx2.cc
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(236): error C2440: <function-style-cast>: невозможно преобразовать "initializer list" в "rtc::webrtc_checks_impl::LogStreamer<rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>>"
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(236): note: "rtc::webrtc_checks_impl::LogStreamer<rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>>::LogStreamer": ни одна перегруженная функция не может преобразовать все типы аргументов
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(280): note: может быть "rtc::webrtc_checks_impl::LogStreamer<rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>>::LogStreamer(T,const rtc::webrtc_checks_impl::LogStreamer<> *)"
with
[
T=rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>
]
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(236): note: "rtc::webrtc_checks_impl::LogStreamer<rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>>::LogStreamer(T,const rtc::webrtc_checks_impl::LogStreamer<> *)": невозможно преобразовать аргумент 1 из "rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kInt,int>" в "T"
with
[
T=rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>
]
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(236): note: Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(236): note: при попытке сопоставить список аргументов "(rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kInt,int>, const rtc::webrtc_checks_impl::LogStreamer<> *)"
C:\TBuild\Libraries\win64\tg_owt\src\rtc_base/checks.h(236): note: контекст создания экземпляра шаблона (сначала самый старый)
C:\TBuild\Libraries\win64\tg_owt\src\modules/audio_processing/agc2/rnn_vad/vector_math.h(56): note: выполняется компиляция ссылки на экземпляр шаблон функции "rtc::webrtc_checks_impl::LogStreamer<rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>> rtc::webrtc_checks_impl::LogStreamer<>::operator <<<int,rtc::webrtc_checks_impl::Val<rtc::webrtc_checks_impl::CheckArgType::kULongLong,unsigned __int64>,0x0>(U) const"
with
[
U=int
]
[57/1380] Building CXX object CMakeFiles\libabsl.dir\src\third_party\abseil-cpp\absl\strings\cord.cc.obj
ninja: build stopped: subcommand failed.
[30/33](Libraries/tg_owt): FAILED
FAILED
По дате
По рейтингу
Проблема связана с ошибками компиляции в файлах checks.h и array_view.h, вызванными неправильной работой оператора << для шаблонных классов LogStreamer. Это может быть связано с несовместимостью версий библиотеки WebRTC или неправильной конфигурацией компиляции с C++20. Попробуйте обновить исходники WebRTC, проверить настройки CMake и убедиться, что все зависимости соответствуют требованиям проекта.
Больше по теме