sourcey / libsourcey

C++14 evented IO libraries for high performance networking and media based applications
https://sourcey.com/libsourcey
GNU Lesser General Public License v2.1
1.29k stars 344 forks source link

Visual Studio 2015 compilation/linking errors #123

Closed DanAndersen closed 7 years ago

DanAndersen commented 7 years ago

Hello again, Thanks to the latest updates, I've been able to get further in building libsourcey, but I am still having difficulties at the final step. I can build WebRTC and have CMake detect it and generate the VS solution, but when I try to build the solution (in Debug or Release), I get a flurry of errors in several of the projects.

I have successfully built WebRTC as described in https://github.com/sourcey/libsourcey/blob/master/doc/installation-windows.md (I am using branch-heads/57).

Here is my CMake output:

$ cmake .. -DCMAKE_BUILD_TYPE=DEBUG -DBUILD_SHARED_LIBS=ON -DBUILD_MODULES=ON -DBUILD_APPLICATIONS=ON -DBUILD_SAMPLES=ON -DBUILD_TESTS=ON -DWITH_FFMPEG=ON -DWITH_WEBRTC=ON -DWEBRTC_ROOT_DIR=E:/webrtc/003/webrtc-checkout/src
-- Including module archo
-- Including module test archotests
-- Including dependency: FFmpeg
-- Including module av
-- Including dependency: FFmpeg
-- Including module sample deviceenumerator
-- Including dependency: FFmpeg
-- Including module sample devicerecorder
-- Including module test avtests
-- Including module base
-- Including module test basetests
-- Including dependency: SSL
-- Including BoringSSL
-- Including dependency: WebRTC
-- Including module crypto
-- Including module test cryptotests
-- Including dependency: SSL
-- Including BoringSSL
-- Including dependency: WebRTC
-- Including module http
-- Including module sample httpechoserver
-- Including module test httptests
-- Including module json
-- Including dependency: SSL
-- Including BoringSSL
-- Including dependency: WebRTC
-- Including module net
-- Including module sample echoserver
-- Including module test nettests
-- Including module sched
-- Including module test schedtests
-- Including dependency: SSL
-- Including BoringSSL
-- Including dependency: WebRTC
-- Including module socketio
-- Including dependency: SSL
-- Including BoringSSL
-- Including dependency: WebRTC
-- Including module test socketiotests
-- Including dependency: SSL
-- Including BoringSSL
-- Including dependency: WebRTC
-- Including module stun
-- Including module test stuntests
-- Including dependency: SSL
-- Including BoringSSL
-- Including dependency: WebRTC
-- Including module symple
-- Including module sample sympleconsole
-- Including module test sympletests
-- Including module turn
-- Including module sample turnserver
-- Including module test turnclienttest
-- Including module util
-- Including module uv
-- Including dependency: WebRTC
CMake Warning at src/webrtc/CMakeLists.txt:7 (message):
  Compiling WebRTC libraries with `BUILD_SHARED_LIBS=OFF` is recommended

-- Including module webrtc
-- Including dependency: WebRTC
-- Including dependency: FFmpeg
-- Including module sample webrtcstreamer
-- Including dependency: WebRTC
-- Including dependency: FFmpeg
-- Including module sample webrtcrecorder
-- Parsing 'libsourcey.h.cmake'
--
--   Platform:
--     Host:                        Windows 10.0.14393 AMD64
--     CMake:                       3.7.0-rc1
--     CMake generator:             Visual Studio 14 2015 Win64
--     CMake build tool:            C:/Program Files (x86)/MSBuild/14.0/bin/MSBuild.exe
--     MSVC:                        1900
--
--   C/C++:
--     Built as dynamic libs?:      YES
--     C++ Compiler:                C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
--     C++ flags (Release):         /DWIN32 /D_WINDOWS /W4 /GR /EHa  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /wd4251 /MD /O2 /Ob2 /DNDEBUG   /Zi
--     C++ flags (Debug):           /DWIN32 /D_WINDOWS /W4 /GR /EHa  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /wd4251 /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1
--     C Compiler:                  C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
--     C flags (Release):           /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /MD /O2 /Ob2 /DNDEBUG  /Zi
--     C flags (Debug):             /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1
--     Linker flags (Release):      /machine:x64  /SAFESEH:NO /INCREMENTAL:NO  /debug
--     Linker flags (Debug):        /machine:x64  /SAFESEH:NO /debug /INCREMENTAL
--
--   Build Components:
--
--      Dependencies:               libuv;zlib;minizip;http_parser
--      Modules:                    archo;av;base;crypto;http;json;net;sched;socketio;stun;symple;turn;util;uv;webrtc
--      Applications:
--      Samples:                    av;http;net;socketio;symple;turn;webrtc
--      Tests:                      archo;av;base;crypto;http;net;sched;socketio;stun;symple;turn
--
--   Other third-party libraries:
--
--     Use OpenSSL:                 YES
--     Use FFmpeg:                  YES
--     Use OpenCV:                  NO
--     Use WebRTC:                  YES
--     Use Poco:                    NO
--     Use wxWidgets:               NO
--
--     Install path:                E:/Libs/libsourcey/build/install
--
--     libsourcey.h is in:          E:/Libs/libsourcey/build/install/include/libsourcey.h
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: E:/Libs/libsourcey/build

Some of the libsourcey projects (e.g. "base") compile just fine, but others do not. Here is a sampling of the ~800 errors VS spits out at me:

13>------ Build started: Project: basetests, Configuration: Debug x64 ------
9>  cipher.cpp
10>  configuration.cpp
11>  audiobuffer.cpp
12>  zipfile.cpp
13>  basetests.cpp
11>  audiocapture.cpp
9>  crypto.cpp
12>     Creating library E:/Libs/libsourcey/build/archo/Debug/scy_archod.lib and object E:/Libs/libsourcey/build/archo/Debug/scy_archod.exp
12>zipfile.obj : error LNK2019: unresolved external symbol "public: __cdecl scy::LogStream::LogStream(enum scy::LogLevel,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int,void const *,char const *)" (??0LogStream@scy@@QEAA@W4LogLevel@1@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HPEBXPEBD@Z) referenced in function "public: void __cdecl scy::archo::ZipFile::extract(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?extract@ZipFile@archo@scy@@QEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
12>zipfile.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl scy::fs::dirname(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?dirname@fs@scy@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV34@@Z) referenced in function "public: bool __cdecl scy::archo::ZipFile::extractCurrentFile(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,bool)" (?extractCurrentFile@ZipFile@archo@scy@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_N@Z)
12>zipfile.obj : error LNK2019: unresolved external symbol "void __cdecl scy::fs::mkdirr(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)" (?mkdirr@fs@scy@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) referenced in function "public: bool __cdecl scy::archo::ZipFile::extractCurrentFile(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,bool)" (?extractCurrentFile@ZipFile@archo@scy@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_N@Z)
12>zipfile.obj : error LNK2019: unresolved external symbol "void __cdecl scy::fs::addnode(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?addnode@fs@scy@@YAXAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV34@@Z) referenced in function "public: bool __cdecl scy::archo::ZipFile::extractCurrentFile(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,bool)" (?extractCurrentFile@ZipFile@archo@scy@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_N@Z)
12>zipfile.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl scy::fs::transcode(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?transcode@fs@scy@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV34@@Z) referenced in function "public: void __cdecl scy::archo::ZipFile::open(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?open@ZipFile@archo@scy@@QEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
12>zipfile.obj : error LNK2001: unresolved external symbol "char const scy::fs::delimiter" (?delimiter@fs@scy@@3DB)
12>E:\Libs\libsourcey\build\archo\Debug\scy_archod.dll : fatal error LNK1120: 6 unresolved externals
9>E:\Libs\libsourcey\src\crypto\include\scy/crypto/x509certificate.h(98): error C2039: 'set': is not a member of 'std'
9>  C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\iostream(12): note: see declaration of 'std'
9>E:\Libs\libsourcey\src\crypto\include\scy/crypto/x509certificate.h(98): error C2061: syntax error: identifier 'set'
9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(229): error C2039: 'set': is not a member of 'std'
9>  C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\iostream(12): note: see declaration of 'std'
9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(229): error C2061: syntax error: identifier 'set'
9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(231): error C2065: 'domainNames': undeclared identifier
9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(231): error C2228: left of '.clear' must have class/struct/union
9>  E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(231): note: type is 'unknown-type'
9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(240): error C2065: 'domainNames': undeclared identifier
9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(240): error C2228: left of '.insert' must have class/struct/union
9>  E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(240): note: type is 'unknown-type'
9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(247): error C2065: 'domainNames': undeclared identifier
9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(247): error C2228: left of '.empty' must have class/struct/union
9>  E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(247): note: type is 'unknown-type'
9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(248): error C2065: 'domainNames': undeclared identifier
9>E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(248): error C2228: left of '.insert' must have class/struct/union
9>  E:\Libs\libsourcey\src\crypto\src\x509certificate.cpp(248): note: type is 'unknown-type'

I suspect there is something related to the recent work in exchanging OpenSSL with BoringSSL and trying to exclude these x509 certificates that was incomplete.

Please let me know if there is more data/logs I can provide you. Thanks!

auscaster commented 7 years ago

Thanks for the info, I'll take a look at it first thing.

auscaster commented 7 years ago

Hmmm it looks like there is an issue when compiling as shared libs. Can you try with -DBUILD_SHARED_LIBS=OFF please? It should work for you while I make some updates.

DanAndersen commented 7 years ago

I attempted building with -DBUILD_SHARED_LIBS=OFF, but I'm not entirely out of the woods yet.

First, I realized that the 32-bit CMake build I had been attempting was causing issues with BoringSSL and WebRTC (which presumably had been built as x64). Lots of "library machine type 'x64' conflicts with target machine type 'X86'" errors, which had an obvious cause.

As a result, I attempted to follow the "WebRTC (Win64)" build instructions in https://github.com/sourcey/libsourcey/blob/master/BUILD.md :

$ cmake -G "Visual Studio 14 Win64" .. -DCMAKE_BUILD_TYPE=DEBUG -DBUILD_SHARED_LIBS=OFF -DBUILD_MODULES=OFF -DBUILD_APPLICATIONS=ON -DBUILD_SAMPLES=ON -DBUILD_TESTS=ON -DWITH_WEBRTC=ON -DWITH_FFMPEG=ON -DBUILD_MODULE_base=ON -DBUILD_MODULE_crypto=ON -DBUILD_MODULE_http=ON -DBUILD_MODULE_json=ON -DBUILD_MODULE_av=ON -DBUILD_MODULE_net=ON -DBUILD_MODULE_socketio=ON -DBUILD_MODULE_symple=ON -DBUILD_MODULE_util=ON -DBUILD_MODULE_uv=ON -DBUILD_MODULE_stun=ON -DBUILD_MODULE_turn=ON -DBUILD_MODULE_webrtc=ON -DFFMPEG_ROOT_DIR=E:/Libs/ffmpeg-20170225-7e4f32f-win64-dev -DWEBRTC_ROOT_DIR=E:/webrtc/003/webrtc-checkout/src

-- The C compiler identification is MSVC 19.0.24213.1
-- The CXX compiler identification is MSVC 19.0.24213.1
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing:  OPENSSL_LIBRARIES OPENSSL_INCLUDE_DIR)
-- Found FFmpeg: E:/Libs/ffmpeg-20170225-7e4f32f-win64-dev/lib/swresample.lib;E:/Libs/ffmpeg-20170225-7e4f32f-win64-dev/lib/avformat.lib;E:/Libs/ffmpeg-20170225-7e4f32f-win64-dev/lib/avcodec.lib;E:/Libs/ffmpeg-20170225-7e4f32f-win64-dev/lib/swscale.lib;E:/Libs/ffmpeg-20170225-7e4f32f-win64-dev/lib/avutil.lib;E:/Libs/ffmpeg-20170225-7e4f32f-win64-dev/lib/avfilter.lib;E:/Libs/ffmpeg-20170225-7e4f32f-win64-dev/lib/avdevice.lib;E:/Libs/ffmpeg-20170225-7e4f32f-win64-dev/lib/postproc.lib
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of off64_t
-- Check size of off64_t - failed
-- Looking for fseeko
-- Looking for fseeko - not found
-- Looking for unistd.h
-- Looking for unistd.h - not found
-- Found WEBRTC: debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/boringssl.dll.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/boringssl/boringssl_asm.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/expat/expat.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/libjpeg_turbo/libjpeg.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/libjpeg_turbo/simd.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/libjpeg_turbo/simd_asm.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/libsrtp/libsrtp.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/libvpx/libvpx.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/libvpx/libvpx_yasm.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/libyuv/libyuv.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/openmax_dl/dl/dl.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/opus/opus.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/protobuf/protobuf_full.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/protobuf/protoc_lib.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/usrsctp/usrsctp.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/winsdk_samples/winsdk_samples.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/third_party/yasm/yasm_utils.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/api/libjingle_peerconnection.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/audio/audio.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/audio/utility/audio_frame_operations.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/base/rtc_base.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/base/rtc_base_approved.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/base/rtc_numerics.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/base/rtc_task_queue.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/call/call.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/common_audio/common_audio.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/common_audio/common_audio_sse2.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/common_video/common_video.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/logging/rtc_event_log_impl.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/logging/rtc_event_log_parser.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/logging/rtc_event_log_proto.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/media/rtc_media.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/media/rtc_media_base.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/ana_config_proto.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/ana_debug_dump_proto.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/audio_coding.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/audio_decoder_interface.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/audio_encoder_interface.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/audio_format.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/audio_format_conversion.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/audio_network_adaptor.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/builtin_audio_decoder_factory.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/cng.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/g711.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/g722.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/ilbc.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/isac.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/isac_c.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/isac_common.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/isac_fix.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/neteq.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/pcm16b.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/red.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/rent_a_codec.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_coding/webrtc_opus.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_conference_mixer/audio_conference_mixer.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_device/audio_device.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_mixer/audio_frame_manipulator.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_mixer/audio_mixer_impl.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_processing/audio_processing.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_processing/audio_processing_sse2.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/audio_processing/audioproc_debug_proto.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/bitrate_controller/bitrate_controller.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/congestion_controller/congestion_controller.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/desktop_capture/desktop_capture.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/desktop_capture/desktop_capture_differ_sse2.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/desktop_capture/primitives.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/media_file/media_file.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/pacing/pacing.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/rtp_rtcp/rtp_rtcp.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/utility/utility.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/video_capture/video_capture.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/video_capture/video_capture_internal_impl.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/video_capture/video_capture_module.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/video_coding/video_coding.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/video_coding/video_coding_utility.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/video_coding/webrtc_h264.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/video_coding/webrtc_i420.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/video_coding/webrtc_vp8.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/video_coding/webrtc_vp9.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/video_processing/video_processing.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/modules/video_processing/video_processing_sse2.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/p2p/libstunprober.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/p2p/rtc_p2p.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/pc/rtc_pc.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/stats/rtc_stats.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/system_wrappers/field_trial_default.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/system_wrappers/metrics_default.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/system_wrappers/system_wrappers.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/tools/chart_proto.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/tools/command_line_parser.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/tools/frame_editing_lib.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/tools/video_quality_analysis.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/video/video.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/voice_engine/audio_coder.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/voice_engine/file_player.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/voice_engine/file_recorder.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/voice_engine/level_indicator.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/voice_engine/voice_engine.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/webrtc.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/obj/webrtc/webrtc_common.lib;debug;E:/webrtc/003/webrtc-checkout/src/out/Debug/protobuf_lite.dll.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/boringssl/boringssl.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/boringssl/boringssl_asm.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/expat/expat.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/libjpeg_turbo/libjpeg.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/libjpeg_turbo/simd.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/libjpeg_turbo/simd_asm.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/libsrtp/libsrtp.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/libvpx/libvpx.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/libvpx/libvpx_yasm.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/libyuv/libyuv.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/openmax_dl/dl/dl.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/opus/opus.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/protobuf/protobuf_full.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/protobuf/protobuf_lite.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/protobuf/protoc_lib.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/usrsctp/usrsctp.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/winsdk_samples/winsdk_samples.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/third_party/yasm/yasm_utils.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/api/libjingle_peerconnection.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/audio/audio.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/audio/utility/audio_frame_operations.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/base/rtc_base.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/base/rtc_base_approved.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/base/rtc_numerics.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/base/rtc_task_queue.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/call/call.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/common_audio/common_audio.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/common_audio/common_audio_sse2.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/common_video/common_video.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/logging/rtc_event_log_impl.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/logging/rtc_event_log_parser.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/logging/rtc_event_log_proto.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/media/rtc_media.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/media/rtc_media_base.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/ana_config_proto.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/ana_debug_dump_proto.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/audio_coding.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/audio_decoder_interface.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/audio_encoder_interface.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/audio_format.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/audio_format_conversion.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/audio_network_adaptor.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/builtin_audio_decoder_factory.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/cng.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/g711.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/g722.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/ilbc.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/isac.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/isac_c.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/isac_common.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/isac_fix.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/neteq.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/pcm16b.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/red.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/rent_a_codec.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_coding/webrtc_opus.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_conference_mixer/audio_conference_mixer.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_device/audio_device.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_mixer/audio_frame_manipulator.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_mixer/audio_mixer_impl.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_processing/audio_processing.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_processing/audio_processing_sse2.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/audio_processing/audioproc_debug_proto.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/bitrate_controller/bitrate_controller.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/congestion_controller/congestion_controller.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/desktop_capture/desktop_capture.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/desktop_capture/desktop_capture_differ_sse2.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/desktop_capture/primitives.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/media_file/media_file.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/pacing/pacing.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/rtp_rtcp/rtp_rtcp.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/utility/utility.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/video_capture/video_capture.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/video_capture/video_capture_internal_impl.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/video_capture/video_capture_module.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/video_coding/video_coding.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/video_coding/video_coding_utility.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/video_coding/webrtc_h264.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/video_coding/webrtc_i420.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/video_coding/webrtc_vp8.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/video_coding/webrtc_vp9.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/video_processing/video_processing.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/modules/video_processing/video_processing_sse2.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/p2p/libstunprober.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/p2p/rtc_p2p.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/pc/rtc_pc.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/stats/rtc_stats.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/system_wrappers/field_trial_default.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/system_wrappers/metrics_default.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/system_wrappers/system_wrappers.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/tools/chart_proto.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/tools/command_line_parser.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/tools/frame_editing_lib.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/tools/video_quality_analysis.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/video/video.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/voice_engine/audio_coder.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/voice_engine/file_player.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/voice_engine/file_recorder.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/voice_engine/level_indicator.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/voice_engine/voice_engine.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/webrtc.lib;optimized;E:/webrtc/003/webrtc-checkout/src/out/Release/obj/webrtc/webrtc_common.lib
-- Including dependency: FFmpeg
-- Including module av
-- Including dependency: FFmpeg
-- Including module sample deviceenumerator
-- Including dependency: FFmpeg
-- Including module sample devicerecorder
-- Including module test avtests
-- Including module base
-- Including module test basetests
-- Including dependency: SSL
-- Including BoringSSL
-- Including dependency: WebRTC
-- Including module crypto
-- Including module test cryptotests
-- Including dependency: SSL
-- Including BoringSSL
-- Including dependency: WebRTC
-- Including module http
-- Including module sample httpechoserver
-- Including module test httptests
-- Including module json
-- Including dependency: SSL
-- Including BoringSSL
-- Including dependency: WebRTC
-- Including module net
-- Including module sample echoserver
-- Including module test nettests
-- Including dependency: SSL
-- Including BoringSSL
-- Including dependency: WebRTC
-- Including module socketio
-- Including dependency: SSL
-- Including BoringSSL
-- Including dependency: WebRTC
-- Including module test socketiotests
-- Including dependency: SSL
-- Including BoringSSL
-- Including dependency: WebRTC
-- Including module stun
-- Including module test stuntests
-- Including dependency: SSL
-- Including BoringSSL
-- Including dependency: WebRTC
-- Including module symple
-- Including module sample sympleconsole
-- Including module test sympletests
-- Including module turn
-- Including module sample turnserver
-- Including module test turnclienttest
-- Including module util
-- Including module uv
-- Including dependency: WebRTC
-- Including module webrtc
-- Including dependency: WebRTC
-- Including dependency: FFmpeg
-- Including module sample webrtcstreamer
-- Including dependency: WebRTC
-- Including dependency: FFmpeg
-- Including module sample webrtcrecorder
-- Parsing 'libsourcey.h.cmake'
--
--   Platform:
--     Host:                        Windows 10.0.14393 AMD64
--     CMake:                       3.7.0-rc1
--     CMake generator:             Visual Studio 14 2015 Win64
--     CMake build tool:            C:/Program Files (x86)/MSBuild/14.0/bin/MSBuild.exe
--     MSVC:                        1900
--
--   C/C++:
--     Built as dynamic libs?:      NO
--     C++ Compiler:                C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
--     C++ flags (Release):         /DWIN32 /D_WINDOWS /W4 /GR /EHa  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /wd4251 /MD /O2 /Ob2 /DNDEBUG   /Zi
--     C++ flags (Debug):           /DWIN32 /D_WINDOWS /W4 /GR /EHa  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /wd4251 /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1
--     C Compiler:                  C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe
--     C flags (Release):           /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /MD /O2 /Ob2 /DNDEBUG  /Zi
--     C flags (Debug):             /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1
--     Linker flags (Release):      /machine:x64  /SAFESEH:NO /INCREMENTAL:NO  /debug
--     Linker flags (Debug):        /machine:x64  /SAFESEH:NO /debug /INCREMENTAL
--
--   Build Components:
--
--      Dependencies:               libuv;zlib;minizip;http_parser
--      Modules:                    av;base;crypto;http;json;net;socketio;stun;symple;turn;util;uv;webrtc
--      Applications:
--      Samples:                    av;http;net;socketio;symple;turn;webrtc
--      Tests:                      av;base;crypto;http;net;socketio;stun;symple;turn
--
--   Other third-party libraries:
--
--     Use OpenSSL:                 YES
--     Use FFmpeg:                  YES
--     Use OpenCV:                  NO
--     Use WebRTC:                  YES
--     Use Poco:                    NO
--     Use wxWidgets:               NO
--
--     Install path:                E:/Libs/libsourcey/build/install
--
--     libsourcey.h is in:          E:/Libs/libsourcey/build/install/include/libsourcey.h
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: E:/Libs/libsourcey/build

Almost everything builds correctly. The problems are in the projects webrtcrecorder and webrtcstreamer, which are specifically the features of libsourcey I'm wanting to use. Here are excerpts from the (long) error output I'm getting:

error LNK2001: unresolved external symbol "public: int __cdecl webrtc::VideoFrame::width(void)const " (?width@VideoFrame@webrtc@@QEBAHXZ)
error LNK2001: unresolved external symbol "public: int __cdecl webrtc::VideoFrame::height(void)const " (?height@VideoFrame@webrtc@@QEBAHXZ)
error LNK2001: unresolved external symbol "public: class rtc::scoped_refptr<class webrtc::VideoFrameBuffer> __cdecl webrtc::VideoFrame::video_frame_buffer(void)const " (?video_frame_buffer@VideoFrame@webrtc@@QEBA?AV?$scoped_refptr@VVideoFrameBuffer@webrtc@@@rtc@@XZ)
error LNK2001: unresolved external symbol "public: __cdecl webrtc::AudioSendStream::Stats::~Stats(void)" (??1Stats@AudioSendStream@webrtc@@QEAA@XZ)
error LNK2001: unresolved external symbol "public: __cdecl webrtc::AudioSendStream::Config::Config(class webrtc::Transport *)" (??0Config@AudioSendStream@webrtc@@QEAA@PEAVTransport@2@@Z)
error LNK2001: unresolved external symbol "public: __cdecl webrtc::AudioSendStream::Config::~Config(void)" (??1Config@AudioSendStream@webrtc@@QEAA@XZ)
error LNK2001: unresolved external symbol "public: __cdecl webrtc::AudioSendStream::Config::SendCodecSpec::SendCodecSpec(void)" (??0SendCodecSpec@Config@AudioSendStream@webrtc@@QEAA@XZ)
error LNK2001: unresolved external symbol "public: bool __cdecl webrtc::AudioSendStream::Config::SendCodecSpec::operator==(struct webrtc::AudioSendStream::Config::SendCodecSpec const &)const " (??8SendCodecSpec@Config@AudioSendStream@webrtc@@QEBA_NAEBU0123@@Z)
[...]
error LNK2001: unresolved external symbol WebRtcG722_CreateDecoder
error LNK2001: unresolved external symbol WebRtcG722_DecoderInit
error LNK2001: unresolved external symbol WebRtcG722_FreeDecoder
error LNK2001: unresolved external symbol WebRtcG722_Decode
error LNK2001: unresolved external symbol WebRtcIlbcfix_DecoderCreate
[...]
error LNK2001: unresolved external symbol WebRtcSpl_AnalysisQMF
[...]
error LNK2001: unresolved external symbol kWebRtcSpl_CountLeadingZeros32_Table
error LNK2001: unresolved external symbol WebRtcSpl_Init
error LNK2001: unresolved external symbol WebRtcSpl_LevinsonDurbin
[...]
error LNK2001: unresolved external symbol WebRtcVad_Create
error LNK2001: unresolved external symbol WebRtcVad_Free
error LNK2001: unresolved external symbol WebRtcVad_Init
[...]
error LNK2001: unresolved external symbol "public: void __cdecl webrtc::VideoFrame::set_render_time_ms(__int64)" (?set_render_time_ms@VideoFrame@webrtc@@QEAAX_J@Z)
error LNK2001: unresolved external symbol "public: __cdecl webrtc::VideoFrame::VideoFrame(class rtc::scoped_refptr<class webrtc::VideoFrameBuffer> const &,unsigned int,__int64,enum webrtc::VideoRotation)" (??0VideoFrame@webrtc@@QEAA@AEBV?$scoped_refptr@VVideoFrameBuffer@webrtc@@@rtc@@I_JW4VideoRotation@1@@Z)
error LNK2001: unresolved external symbol "public: static class rtc::scoped_refptr<class webrtc::I420Buffer> __cdecl webrtc::I420Buffer::Create(int,int,int,int,int)" (?Create@I420Buffer@webrtc@@SA?AV?$scoped_refptr@VI420Buffer@webrtc@@@rtc@@HHHHH@Z)
error LNK2001: unresolved external symbol "public: __int64 __cdecl webrtc::VideoFrame::render_time_ms(void)const " (?render_time_ms@VideoFrame@webrtc@@QEBA_JXZ)
error LNK2001: unresolved external symbol "public: unsigned char * __cdecl webrtc::I420Buffer::MutableDataY(void)" (?MutableDataY@I420Buffer@webrtc@@QEAAPEAEXZ)
error LNK2001: unresolved external symbol "public: unsigned char * __cdecl webrtc::I420Buffer::MutableDataU(void)" (?MutableDataU@I420Buffer@webrtc@@QEAAPEAEXZ)
error LNK2001: unresolved external symbol "public: unsigned char * __cdecl webrtc::I420Buffer::MutableDataV(void)" (?MutableDataV@I420Buffer@webrtc@@QEAAPEAEXZ)
error LNK2001: unresolved external symbol "public: __cdecl webrtc::VideoFrame::VideoFrame(class webrtc::VideoFrame const &)" (??0VideoFrame@webrtc@@QEAA@AEBV01@@Z)
error LNK2001: unresolved external symbol vp8_fast_quantize_b_sse2
error LNK2001: unresolved external symbol vp8_fast_quantize_b_ssse3
error LNK2001: unresolved external symbol vp8_regular_quantize_b_sse2
error LNK2001: unresolved external symbol vp8_regular_quantize_b_sse4_1
[...]
error LNK2001: unresolved external symbol vpx_sub_pixel_avg_variance16x16_sse2
error LNK2001: unresolved external symbol vpx_sub_pixel_avg_variance16x16_ssse3
error LNK2001: unresolved external symbol vpx_sub_pixel_avg_variance16x32_sse2
error LNK2001: unresolved external symbol vpx_sub_pixel_avg_variance16x32_ssse3
[...]
error LNK2001: unresolved external symbol vpx_variance16x16_sse2
error LNK2001: unresolved external symbol vpx_variance16x16_avx2
error LNK2001: unresolved external symbol vpx_variance32x16_sse2
[...]
error LNK2001: unresolved external symbol vpx_variance8x16_sse2
error LNK2001: unresolved external symbol vpx_variance8x8_sse2
error LNK2001: unresolved external symbol vp8_dequant_idct_add_uv_block_sse2
error LNK2001: unresolved external symbol vp8_dequant_idct_add_y_block_sse2
error LNK2001: unresolved external symbol vp8_dequantize_b_mmx
error LNK2001: unresolved external symbol vpx_highbd_quantize_b_sse2
error LNK2001: unresolved external symbol vpx_fdct4x4_sse2
error LNK2001: unresolved external symbol vpx_highbd_10_sub_pixel_avg_variance16x16_sse2
error LNK2001: unresolved external symbol vpx_highbd_10_sub_pixel_avg_variance16x32_sse2
error LNK2001: unresolved external symbol vpx_highbd_10_sub_pixel_avg_variance16x8_sse2
error LNK2001: unresolved external symbol vpx_highbd_10_sub_pixel_avg_variance32x16_sse2
[...]
error LNK2001: unresolved external symbol vpx_highbd_10_variance16x16_sse2
error LNK2001: unresolved external symbol vpx_highbd_10_variance16x32_sse2
error LNK2001: unresolved external symbol vpx_highbd_10_variance16x8_sse2
error LNK2001: unresolved external symbol vpx_highbd_10_variance32x16_sse2
error LNK2001: unresolved external symbol vpx_highbd_10_variance32x32_sse2
[...]
error LNK2001: unresolved external symbol vpx_highbd_12_sub_pixel_avg_variance16x16_sse2
error LNK2001: unresolved external symbol vpx_highbd_12_sub_pixel_avg_variance16x32_sse2
error LNK2001: unresolved external symbol vpx_highbd_12_sub_pixel_avg_variance16x8_sse2
error LNK2001: unresolved external symbol vpx_highbd_12_sub_pixel_avg_variance32x16_sse2
[...]
error LNK2001: unresolved external symbol vpx_get8x8var_sse2
error LNK2001: unresolved external symbol "public: __cdecl webrtc::AudioSendStream::Stats::Stats(void)" (??0Stats@AudioSendStream@webrtc@@QEAA@XZ)
error LNK2001: unresolved external symbol "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl webrtc::AudioSendStream::Config::ToString(void)const " (?ToString@Config@AudioSendStream@webrtc@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
error LNK2001: unresolved external symbol WebRtcSpl_Resample22khzTo16khz
[...]
error LNK2001: unresolved external symbol WebRtcSpl_DownsampleBy2
error LNK2001: unresolved external symbol WebRtcSpl_UpsampleBy2
error LNK2001: unresolved external symbol "public: virtual int __cdecl webrtc::I420Buffer::width(void)const " (?width@I420Buffer@webrtc@@UEBAHXZ)
error LNK2001: unresolved external symbol "public: virtual int __cdecl webrtc::I420Buffer::height(void)const " (?height@I420Buffer@webrtc@@UEBAHXZ)
error LNK2001: unresolved external symbol "public: virtual unsigned char const * __cdecl webrtc::I420Buffer::DataY(void)const " (?DataY@I420Buffer@webrtc@@UEBAPEBEXZ)
error LNK2001: unresolved external symbol "public: virtual unsigned char const * __cdecl webrtc::I420Buffer::DataU(void)const " (?DataU@I420Buffer@webrtc@@UEBAPEBEXZ)
error LNK2001: unresolved external symbol "public: virtual unsigned char const * __cdecl webrtc::I420Buffer::DataV(void)const " (?DataV@I420Buffer@webrtc@@UEBAPEBEXZ)
error LNK2001: unresolved external symbol "public: virtual int __cdecl webrtc::I420Buffer::StrideY(void)const " (?StrideY@I420Buffer@webrtc@@UEBAHXZ)
error LNK2001: unresolved external symbol "public: virtual int __cdecl webrtc::I420Buffer::StrideU(void)const " (?StrideU@I420Buffer@webrtc@@UEBAHXZ)
error LNK2001: unresolved external symbol "public: virtual int __cdecl webrtc::I420Buffer::StrideV(void)const " (?StrideV@I420Buffer@webrtc@@UEBAHXZ)
error LNK2001: unresolved external symbol "public: virtual void * __cdecl webrtc::I420Buffer::native_handle(void)const " (?native_handle@I420Buffer@webrtc@@UEBAPEAXXZ)
error LNK2001: unresolved external symbol "public: virtual class rtc::scoped_refptr<class webrtc::VideoFrameBuffer> __cdecl webrtc::I420Buffer::NativeToI420Buffer(void)" (?NativeToI420Buffer@I420Buffer@webrtc@@UEAA?AV?$scoped_refptr@VVideoFrameBuffer@webrtc@@@rtc@@XZ)
error LNK2001: unresolved external symbol "protected: __cdecl webrtc::I420Buffer::I420Buffer(int,int)" (??0I420Buffer@webrtc@@IEAA@HH@Z)
error LNK2001: unresolved external symbol "protected: virtual __cdecl webrtc::I420Buffer::~I420Buffer(void)" (??1I420Buffer@webrtc@@MEAA@XZ)
error LNK2001: unresolved external symbol "public: __cdecl webrtc::VideoFrame::VideoFrame(class webrtc::VideoFrame &&)" (??0VideoFrame@webrtc@@QEAA@$$QEAV01@@Z)
error LNK2001: unresolved external symbol "public: class webrtc::VideoFrame & __cdecl webrtc::VideoFrame::operator=(class webrtc::VideoFrame &&)" (??4VideoFrame@webrtc@@QEAAAEAV01@$$QEAV01@@Z)
error LNK2001: unresolved external symbol WebRtcSpl_ScaleVector
[...]
error LNK2001: unresolved external symbol WebRtcIlbcfix_EncoderCreate
error LNK2001: unresolved external symbol WebRtcIlbcfix_EncoderFree
error LNK2001: unresolved external symbol WebRtcIlbcfix_EncoderInit
error LNK2001: unresolved external symbol WebRtcIlbcfix_Encode
error LNK2001: unresolved external symbol WebRtcPcm16b_Encode
E:\Libs\libsourcey\build\webrtc\samples\webrtcrecorder\Debug\webrtcrecorderd.exe : fatal error LNK1120: 462 unresolved externals
E:\Libs\libsourcey\build\webrtc\samples\webrtcstreamer\Debug\webrtcstreamerd.exe : fatal error LNK1120: 462 unresolved externals
========== Build: 35 succeeded, 2 failed, 0 up-to-date, 0 skipped ==========
DanAndersen commented 7 years ago

One additional piece of information: the output above resulted when trying to build in Debug mode in Visual Studio. When attempting to build in Release mode (whether or not I set CMAKE_BUILD_TYPE to DEBUG or RELEASE beforehand), I get some errors (in addition to the ones above) that cause all the test projects to fail:

error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in nettests.obj
error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in echoserver.obj
error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in httpechoserver.obj
[...]
auscaster commented 7 years ago

Hmmm .... it looks like you have some conflicts with MT or MTd runtime libraries. All the libraries you link with need to be compiled with the same MT or MTd runtimes, which goes for both webrtc and ffmpeg.

Sometimes runtimes can get jumbled after hacking around, so at this point I would try to delete the webrtc/out/Debug folder and recompile webrtc code with all default settings ... you can follow this guide: https://github.com/sourcey/libsourcey/blob/master/doc/installation-windows.md#install-webrtc-optional

Once webrtc is recompiled please try also deleting the libsourcey build folder and trying again from scratch using your existing libsourcey cmake command. I would suggest a static debug build.

Everything should work! Its working for me right now on the same system with the same dependencies. Also the latest patch a6f489efc62e969345704153ca03b1a8825b4a05 to master adds shared library exports on windows so you should be able to compile in shared mode now too.

Good luck...

DanAndersen commented 7 years ago

Hi again, First, thank you for being patient and helpful in this troubleshooting process; I can only imagine how frustrating this must be on the other side.

I have redownloaded and rebuilt WebRTC from scratch (I am using branch-heads/57 -- please let me know if there is a separate release that you have used and found success with), and I've cloned a new copy of libsourcey.

The main issue seems to be the mismatch between static/dynamic libraries.

For example, if I try to build a project (e.g. webrtcrecorder) as dynamic (/MDd), I will get the following error from several libs:

LNK2038 mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in main.obj

The error suggests that the project "webrtcrecorder" was set as dynamic but a library it depends on is set as static. In some cases, this is easy to resolve by setting the other libsourcey projects to also be dynamic, but then there are further dependencies in the WebRTC build that are static and seem to necessarily be static.

When I try to build the libsourcey projects as dynamic, I get the LNK2038 errors from these WebRTC libs:

protobuf_lite.lib
legacy_encoded_audio_frame.lib
libcpmtd.lib
audio_level.lib

On the other hand, when I try to build everything in libsourcey as static, I get the reverse error:

LNK2038 mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MTd_StaticDebug' in main.obj This ends up appearing for the following (presumably dynamic?) WebRTC libs:

libjingle_peerconnection.lib
rtc_base.lib
rtc_base_approved.lib
call.lib
rtc_event_log_impl.lib
rtc_event_log_proto.lib
rtc_media.lib
rtc_media_base.lib
audio_coding.lib
audio_encoder_interface.lib
audio_format.lib
builtin_audio_decoder_factory.lib
g711.lib
g722.lib
ilbc.lib
isac.lib
isac_common.lib
neteq.lib
pcm16b.lib
rent_a_codec.lib
webrtc_opus.lib
audio_mixer_impl.lib
audio_processing.lib
audio_processing_sse2.lib
audioproc_debug_proto.lib
congestion_controller.lib
pacing.lib
remote_bitrate_estimator.lib
rtp_rtcp.lib
utility.lib
video_coding.lib
video_coding_utility.lib
webrtc_h264.lib
webrtc_i420.lib
webrtc_vp8.lib
webrtc_vp9.lib
rtc_p2p.lib
rtc_pc.lib
rtc_stats.lib
field_trial_default.lib
metrics_default.lib
system_wrappers.lib
video.lib
voice_engine.lib
webrtc_common.lib
audio.lib
audio_frame_operations.lib
rtc_task_queue.lib
common_audio.lib
common_audio_sse2.lib
common_video.lib
audio_decoder_interface.lib
audio_format_conversion.lib
audio_network_adaptor.lib
cng.lib
red.lib
audio_conference_mixer.lib
audio_device.lib
audio_frame_manipulator.lib
bitrate_controller.lib
file_player.lib
file_recorder.lib
level_indicator.lib
ana_config_proto.lib
ana_debug_dump_proto.lib
media_file.lib
audio_coder.lib

The issue results regardless of whether I attempt to build libsourcey as Debug or Release in Visual Studio.

I'm continuing to troubleshoot on my side as well, but I wanted to post this in case this sort of issue was something you recognized.

auscaster commented 7 years ago

Hi Daniel

That's quite alright, I know how frustrating these issues can be and you've come this far and I'm sure the solution is not far off. I'm actually building against webrtc master branch, although I don't think that's the issue here.

Try building everything static to begin with, it's just easier. Also sync the lastest master branch of libsourcey.

With webrtc use the following gn command gn gen out/Debug --args="rtc_include_tests=false" to build static libs. Always be sure to delete the old out/debug folder first.

Then try to build libsourcey with DBUILD_SHARED_LIBS=OFF, again removing the old build folder. you should not have to manually set any projects as dynamic or static, it will be done via CMake.

I hope you can get through this and perhaps document some of the process so it can help others facing the same issues, maybe I can add them to the README.

Let me know how you go!

DanAndersen commented 7 years ago

Hi, I have followed your instructions (using master for WebRTC) and here are some updates/summaries:

First, all the projects in modules and dependencies are able to compile without problems. This was the case beforehand as well, but I wanted to mention that. If I run cmake without the samples or the tests, the generated solution compiles with no issue:

cmake -G "Visual Studio 14 Win64" .. -DCMAKE_BUILD_TYPE=DEBUG -DBUILD_SHARED_LIBS=OFF -DBUILD_MODULES=ON -DBUILD_APPLICATIONS=ON -DBUILD_SAMPLES=OFF -DBUILD_TESTS=OFF -DWITH_FFMPEG=ON -DFFMPEG_ROOT_DIR=C:\Libs\ffmpeg-20170308-3016e91-win64-dev -DWITH_WEBRTC=ON -DWEBRTC_ROOT_DIR=C:\Libs\webrtc\001\webrtc-checkout\src

The issues seem to be with (some of) the samples and the tests. There are two issues I'm seeing: (1) there is a compilation error in webrtcrecorder and webrtcstreamer that has an unknown cause to me, and (2) any samples/tests that require anything WebRTC-related (including BoringSSL) end up listing every possible *.lib file in their project properties.

For (1), the compilation errors I get are:

1>  C:\Libs\libsourcey\001\libsourcey\src\webrtc\samples\webrtcrecorder\signaler.cpp(87): note: 'void webrtc::PeerConnectionObserver::OnAddStream(rtc::scoped_refptr<webrtc::MediaStreamInterface>)': is abstract
1>  C:\Libs\webrtc\001\webrtc-checkout\src\webrtc/api/peerconnectioninterface.h(776): note: see declaration of 'webrtc::PeerConnectionObserver::OnAddStream'
1>  C:\Libs\libsourcey\001\libsourcey\src\webrtc\samples\webrtcrecorder\signaler.cpp(87): note: 'void webrtc::PeerConnectionObserver::OnRemoveStream(rtc::scoped_refptr<webrtc::MediaStreamInterface>)': is abstract
1>  C:\Libs\webrtc\001\webrtc-checkout\src\webrtc/api/peerconnectioninterface.h(779): note: see declaration of 'webrtc::PeerConnectionObserver::OnRemoveStream'
1>  C:\Libs\libsourcey\001\libsourcey\src\webrtc\samples\webrtcrecorder\signaler.cpp(87): note: 'void webrtc::PeerConnectionObserver::OnDataChannel(rtc::scoped_refptr<webrtc::DataChannelInterface>)': is abstract
1>  C:\Libs\webrtc\001\webrtc-checkout\src\webrtc/api/peerconnectioninterface.h(783): note: see declaration of 'webrtc::PeerConnectionObserver::OnDataChannel'

and

1>C:\Libs\libsourcey\001\libsourcey\src\webrtc\samples\webrtcstreamer\signaler.cpp(94): error C2259: 'scy::StreamingPeerConnection': cannot instantiate abstract class
1>  C:\Libs\libsourcey\001\libsourcey\src\webrtc\samples\webrtcstreamer\signaler.cpp(94): note: due to following members:
1>  C:\Libs\libsourcey\001\libsourcey\src\webrtc\samples\webrtcstreamer\signaler.cpp(94): note: 'void webrtc::PeerConnectionObserver::OnAddStream(rtc::scoped_refptr<webrtc::MediaStreamInterface>)': is abstract
1>  C:\Libs\webrtc\001\webrtc-checkout\src\webrtc/api/peerconnectioninterface.h(776): note: see declaration of 'webrtc::PeerConnectionObserver::OnAddStream'
1>  C:\Libs\libsourcey\001\libsourcey\src\webrtc\samples\webrtcstreamer\signaler.cpp(94): note: 'void webrtc::PeerConnectionObserver::OnRemoveStream(rtc::scoped_refptr<webrtc::MediaStreamInterface>)': is abstract
1>  C:\Libs\webrtc\001\webrtc-checkout\src\webrtc/api/peerconnectioninterface.h(779): note: see declaration of 'webrtc::PeerConnectionObserver::OnRemoveStream'
1>  C:\Libs\libsourcey\001\libsourcey\src\webrtc\samples\webrtcstreamer\signaler.cpp(94): note: 'void webrtc::PeerConnectionObserver::OnDataChannel(rtc::scoped_refptr<webrtc::DataChannelInterface>)': is abstract
1>  C:\Libs\webrtc\001\webrtc-checkout\src\webrtc/api/peerconnectioninterface.h(783): note: see declaration of 'webrtc::PeerConnectionObserver::OnDataChannel'

I'm not yet familiar enough with the codebase to know what would be a correct course of action on this, or if this is even something that is being seen on other people's installations.

For (2):

In contrast, the project cryptotests, which would fail with (among others) the LNK2038 errors I mentioned earlier, had the following (long!) list of additional dependencies:

kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
iphlpapi.lib
psapi.lib
ws2_32.lib
dsound.lib
winmm.lib
strmiids.lib
..\..\uv\Debug\scy_uvd.lib
..\..\base\Debug\scy_based.lib
..\Debug\scy_cryptod.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\swresample.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\avformat.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\avcodec.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\swscale.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\avutil.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\avfilter.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\avdevice.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\postproc.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\clang_x64\obj\third_party\libjpeg_turbo\libjpeg.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\clang_x64\obj\third_party\libjpeg_turbo\simd.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\clang_x64\obj\third_party\libjpeg_turbo\simd_asm.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\clang_x64\obj\third_party\libyuv\libyuv_internal.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\boringssl\boringssl.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\boringssl\boringssl_asm.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\expat\expat.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\libsrtp\libsrtp.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\libvpx\libvpx.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\libvpx\libvpx_yasm.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\openmax_dl\dl\dl.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\opus\opus.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\protobuf\protobuf_full.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\protobuf\protobuf_lite.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\protobuf\protoc_lib.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\usrsctp\usrsctp.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\winsdk_samples\winsdk_samples.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\yasm\yasm_utils.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\api\audio_codecs\builtin_audio_decoder_factory.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\api\libjingle_peerconnection_api.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\audio\audio.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\audio\utility\audio_frame_operations.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\base\rtc_base.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\base\rtc_base_approved.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\base\rtc_numerics.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\base\rtc_task_queue.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\call\call.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\common_audio\common_audio.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\common_audio\common_audio_sse2.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\common_video\common_video.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\logging\rtc_event_log_impl.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\logging\rtc_event_log_parser.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\logging\rtc_event_log_proto.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\media\rtc_media.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\media\rtc_media_base.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\ana_config_proto.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\ana_debug_dump_proto.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\audio_coding.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\audio_encoder_interface.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\audio_format_conversion.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\audio_network_adaptor.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\builtin_audio_decoder_factory_internal.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\cng.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\g711.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\g722.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\ilbc.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\isac.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\isac_c.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\isac_common.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\isac_fix.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\legacy_encoded_audio_frame.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\neteq.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\pcm16b.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\red.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\rent_a_codec.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_coding\webrtc_opus.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_conference_mixer\audio_conference_mixer.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_device\audio_device.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_mixer\audio_frame_manipulator.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_mixer\audio_mixer_impl.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_processing\audio_processing.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_processing\audio_processing_sse2.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\audio_processing\audioproc_debug_proto.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\bitrate_controller\bitrate_controller.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\congestion_controller\congestion_controller.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\desktop_capture\desktop_capture.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\desktop_capture\desktop_capture_differ_sse2.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\desktop_capture\primitives.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\media_file\media_file.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\pacing\pacing.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\remote_bitrate_estimator\remote_bitrate_estimator.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\rtp_rtcp\rtp_rtcp.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\utility\utility.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\video_capture\video_capture_internal_impl.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\video_capture\video_capture_module.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\video_coding\video_coding.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\video_coding\video_coding_utility.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\video_coding\webrtc_h264.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\video_coding\webrtc_i420.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\video_coding\webrtc_vp8.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\video_coding\webrtc_vp9.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\video_processing\video_processing.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\modules\video_processing\video_processing_sse2.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\ortc\ortc.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\p2p\libstunprober.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\p2p\rtc_p2p.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\pc\libjingle_peerconnection.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\pc\rtc_pc.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\stats\rtc_stats.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\system_wrappers\field_trial_default.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\system_wrappers\metrics_default.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\system_wrappers\system_wrappers.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\tools\chart_proto.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\tools\command_line_parser.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\tools\frame_editing_lib.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\tools\video_quality_analysis.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\video\video.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\voice_engine\audio_coder.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\voice_engine\audio_level.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\voice_engine\file_player.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\voice_engine\file_recorder.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\voice_engine\voice_engine.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\webrtc.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\webrtc\webrtc_common.lib
Secur32.lib
Winmm.lib
msdmo.lib
dmoguids.lib
wmcodecdspuuid.lib
..\..\vendor\libuv\Debug\libuvd.lib
..\..\vendor\minizip\Debug\minizipd.lib
..\..\vendor\http_parser\Debug\http_parserd.lib
userenv.lib
..\..\vendor\zlib\Debug\zlibd.lib

It looks like because cryptotests is using BoringSSL (which is in WebRTC), the cmake script is bringing along every single lib file in WebRTC for the ride. As a result, it brings over certain libraries that are compiled with a different static/dynamic nature than cryptotests, which leads to an impossible linking situation.

Thankfully, I was able to get cryptotests to completely compile/link and run by removing unneeded WebRTC library dependencies from the list in Visual Studio, yielding the following list:

kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
iphlpapi.lib
psapi.lib
ws2_32.lib
dsound.lib
winmm.lib
strmiids.lib
..\..\uv\Debug\scy_uvd.lib
..\..\base\Debug\scy_based.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\boringssl\boringssl.lib
C:\Libs\webrtc\001\webrtc-checkout\src\out\Debug\obj\third_party\boringssl\boringssl_asm.lib
..\Debug\scy_cryptod.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\swresample.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\avformat.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\avcodec.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\swscale.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\avutil.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\avfilter.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\avdevice.lib
C:\Libs\ffmpeg-20170308-3016e91-win64-dev\lib\postproc.lib
Secur32.lib
Winmm.lib
msdmo.lib
dmoguids.lib
wmcodecdspuuid.lib
..\..\vendor\libuv\Debug\libuvd.lib
..\..\vendor\minizip\Debug\minizipd.lib
..\..\vendor\http_parser\Debug\http_parserd.lib
userenv.lib
..\..\vendor\zlib\Debug\zlibd.lib

I cannot yet say whether this kind of manual fixing of library dependencies is possible for webrtcrecorder and webrtcstreamer (as those projects are still stuck on a compilation error rather than a linking error... who knows if those projects will end up relying on protobuf or some other library that is actually built statically), but it does seem to help for some other test projects. Is there a way in the cmake script to detect which lib files are actually needed by a project before assigning them all to the project? Is this behavior even something you're seeing on your side? I'm curious if your system lists the same large number of WebRTC libraries even in cryptotests when building with BoringSSL.

Thanks again! We're getting to the bottom of this :)

auscaster commented 7 years ago

Hey mate, thanks for the update. As you suspect there is currently a kludge with the way BoringSSL is included, and it includes all the WebRTC libraries. It doesn't need to, but I needed to get it working quickly, and only WebRTC projects require building with BoringSSL so I decided to let it go at that. If you fix those runtime issues it wont be a problem.

So the problem you have is that the following WebRTC libs have LNK2038 errors, right?

protobuf_lite.lib
legacy_encoded_audio_frame.lib
libcpmtd.lib
audio_level.lib

That is very strange because it means some your WebRTC libs are getting compiled with different runtime libraries!! I have no idea why that would be. Perhaps some old libs were left behind from when you were compiling dynamic libs? Anyway, since we are both compiling for the same environment I propose that I send you my compiled WebRTC libs and you try with those. I am currently spending a weekend on the beach so the earliest I can send them to you will be tomorrow night.

Regarding the linker errors you received on the WebRTC samples it's possible that Google has changed the API yet again, and I need to implement the new abstract webrtc::PeerConnectionObserver methods. I'll check into that again further tomorrow night.

If you send me your email address I'll send you a link to download my precompiled WebRTC libs at the earliest possible time.

Good luck in the mean time and keep me posted if you make any progress.

DanAndersen commented 7 years ago

Whenever you are available, I can be reached at andersed@purdue.edu to link me your current WebRTC libs. Definitely enjoy your weekend on the beach! (My work involving libsourcey doesn't have a really pressing deadline, as it's more research-oriented, so no rush) Thanks!

auscaster commented 7 years ago

Hey Dan

Beach was awesome :)

I have uploded the compiled webrtc libs to dropbox for you: https://www.dropbox.com/s/fo56blctc80sey8/webrtc-x64-win-0e22a4cfd3790d80ad1ae699891341fe322cb418.rar?dl=0

By the way thers libs were compiled against webrtc master 0e22a4cfd3790d80ad1ae699891341fe322cb418, so you should checkout that version to ensure abi compatibility.

Best of luck...

DanAndersen commented 7 years ago

I was able to use your provided already-built libs to get a build of libsourcey that was able to build all the samples and tests (though I did have to manually remove the lib reference to protobuf_full, as there was a collision between protobuf_full and protobuf_lite). Unfortunately I have no idea what the difference is at this point, but I was able to get everything built and it seems as if the programs are running correctly. I'll go ahead and close this particular issue. Thanks!