2016-09-28 3 views
2

Итак, моя цель - создать собственное приложение WebRTC с использованием api WebRTC C++.Ссылка на родное приложение WebRTC с Visual Studio

Я составил WebRTC для использования с Visual Studio (2015), используя следующую инструкцию:

https://github.com/ipop-project/ipop-project.github.io/wiki/Building-the-WebRTC-lib-for-Windows

После сборки завершенного я попытался создать новый проект Visual Studio консоли и добавил следующий код:

#include <iostream> 

#define WEBRTC_WIN 

#include <webrtc/api/peerconnection.h> 
#include <webrtc/api/peerconnectionfactory.h> 
#include <webrtc/api/peerconnectioninterface.h> 

int main() 
{ 
    auto pcf = webrtc::CreatePeerConnectionFactory(); 

    std::cout << "Hallo!" << std::endl; 
} 

Добавление каталога сборки в путь поиска include отлично работает, однако я не могу связать приложение, поиск каталогов сборки для lib-файлов и добавление их в компоновщик только добавляет больше ошибки связи, поскольку есть целая группа, и я подозреваю, что некоторые из них не должны быть связаны с моим приложением.

Каков правильный способ связывания приложения и как узнать, какие .lib-файлы используются в моей функциональности?

+0

что говорит об ошибке ссылки? – Matt

+0

Посмотрите мои комментарии на ответ Мартина Боннера. Связываясь с _all_, библиотеки, сгенерированные во время сборки webrtc, вызывают следующие 27 ошибок компоновщика: http://pastebin.com/Q9s3X5wA – monoceres

ответ

1

Я решил это!

После покопаться в файлах сборка для примеров в WebRTC я обнаружил, что следующие библиотеки должны быть связаны между собой:

obj\webrtc\api\libjingle_peerconnection.lib 
obj\webrtc\system_wrappers\field_trial_default.lib 
obj\webrtc\system_wrappers\metrics_default.lib 
obj\third_party\jsoncpp\jsoncpp.lib 
obj\webrtc\media\rtc_media.lib 
obj\webrtc\base\rtc_base_approved.lib 
obj\webrtc\webrtc_common.lib 
obj\webrtc\webrtc.lib 
obj\webrtc\system_wrappers\system_wrappers.lib 
obj\webrtc\voice_engine\voice_engine.lib 
obj\webrtc\common_audio\common_audio.lib 
obj\third_party\openmax_dl\dl\openmax_dl.lib 
obj\webrtc\common_audio\common_audio_sse2.lib 
obj\webrtc\modules\audio_coding_module.lib 
obj\webrtc\modules\cng.lib 
obj\webrtc\modules\audio_encoder_interface.lib 
obj\webrtc\modules\g711.lib 
obj\webrtc\modules\pcm16b.lib 
obj\webrtc\modules\ilbc.lib 
obj\webrtc\modules\webrtc_opus.lib 
obj\third_party\opus\opus.lib 
obj\webrtc\modules\g722.lib 
obj\webrtc\modules\isac.lib 
obj\webrtc\modules\audio_decoder_interface.lib 
obj\webrtc\modules\isac_common.lib 
obj\webrtc\modules\red.lib 
obj\webrtc\rtc_event_log.lib 
obj\webrtc\rtc_event_log_proto.lib 
protobuf_lite.dll.lib 
obj\webrtc\modules\neteq.lib 
obj\webrtc\modules\builtin_audio_decoder_factory.lib 
obj\webrtc\modules\audio_decoder_factory_interface.lib 
obj\webrtc\modules\rent_a_codec.lib 
obj\webrtc\modules\audio_conference_mixer.lib 
obj\webrtc\modules\audio_processing.lib 
obj\webrtc\modules\audioproc_debug_proto.lib 
obj\webrtc\modules\audio_processing_sse2.lib 
obj\webrtc\modules\webrtc_utility.lib 
obj\webrtc\modules\media_file.lib 
obj\webrtc\base\rtc_task_queue.lib 
obj\webrtc\modules\audio_device.lib 
obj\webrtc\modules\bitrate_controller.lib 
obj\webrtc\modules\paced_sender.lib 
obj\webrtc\modules\rtp_rtcp.lib 
obj\webrtc\common_video\common_video.lib 
libyuv.lib 
obj\third_party\libjpeg_turbo\libjpeg.lib 
obj\webrtc\modules\remote_bitrate_estimator.lib 
obj\webrtc\voice_engine\level_indicator.lib 
obj\webrtc\modules\congestion_controller.lib 
obj\webrtc\modules\video_capture_module.lib 
obj\webrtc\modules\video_processing.lib 
obj\webrtc\modules\video_processing_sse2.lib 
obj\webrtc\modules\webrtc_video_coding.lib 
obj\webrtc\modules\webrtc_h264.lib 
obj\webrtc\modules\webrtc_i420.lib 
obj\webrtc\modules\video_coding\utility\video_coding_utility.lib 
obj\webrtc\modules\video_coding\codecs\vp8\webrtc_vp8.lib 
obj\third_party\libvpx\libvpx.lib 
obj\third_party\libvpx\libvpx_intrinsics_mmx.lib 
obj\third_party\libvpx\libvpx_intrinsics_sse2.lib 
obj\third_party\libvpx\libvpx_intrinsics_ssse3.lib 
obj\third_party\libvpx\libvpx_intrinsics_sse4_1.lib 
obj\third_party\libvpx\libvpx_intrinsics_avx.lib 
obj\third_party\libvpx\libvpx_intrinsics_avx2.lib 
obj\webrtc\modules\video_coding\codecs\vp9\webrtc_vp9.lib 
obj\webrtc\p2p\rtc_p2p.lib 
obj\webrtc\base\rtc_base.lib 
boringssl.dll.lib 
obj\third_party\usrsctp\usrsctplib.lib 
obj\webrtc\modules\video_capture_module_internal_impl.lib 
obj\third_party\winsdk_samples\directshow_baseclasses.lib 
obj\webrtc\pc\rtc_pc.lib 
obj\third_party\libsrtp\libsrtp.lib 
winmm.lib 
dmoguids.lib 
wmcodecdspuuid.lib 
amstrmid.lib 
msdmo.lib 
crypt32.lib 
iphlpapi.lib 
secur32.lib 
Strmiids.lib 
+1

Не стесняйтесь использовать скрипт' merge_libs.py', расположенный в каталоге 'src/webrtc/build'. Он будет генерировать один файл webrtc.lib. Я также поддерживаю сборку скриптов сборки, если вам интересно: https://github.com/aisouard/libwebrtc –

+0

Это беспорядок случайных зависимостей! Что еще хуже, потому что установка 'is_component_build = true', похоже, не имеет никакого эффекта. Таким образом, в основном это статически связывает мир. Почему я хочу audio_confrence_mixer только в любом приложении! – dashesy

+1

@ dashy компоновщик, надеюсь, разделит все, что не нужно, но да, это беспорядочно. Тем не менее, последний WebRTC (M58), по-видимому, теперь создает единственный файл webrtc.lib, сокращая список ссылок и несколько спутников (например, boringssl & protobuf_lite). – monoceres

0

Документ, который вы связаны, говорит вам нужны следующие библиотеки:

  • boringssl.dll.lib
  • boringssl_asm.lib
  • field_trial_default.lib
  • jsoncpp.lib
  • rtc_base .lib
  • rtc_base_approved.lib
  • rtc_p2p.lib
  • rtc_xmllite.lib
  • rtc_xmpp.lib

Я связала бы против всех. Это вряд ли повредит.

+0

Пробовал, не удалось решить CreatePeerConnectionFactory: Уровень важности \t Код \t «LNK2019 \t« неразрешенный внешний символ »class rtc :: scoped_refptr <класс webrtc :: PeerConnectionFactoryInterface> __cdecl webrtc :: CreatePeerConnectionFactory (void) "(? CreatePeerConnectionFactory @ webrtc @@ YA? AV? $ scoped_refptr @ VPeerConnectionFactoryInterface @ webrtc @@@ rtc @@ XZ) ссылка на главную функцию \t WebRTC-TEst \t C: \ dev \ WebRTC-TEst \ main.obj \t 1 " – monoceres

Смежные вопросы