2016-09-28 124 views
2

所以我的目标是使用WebRTC C++ API创建本地WebRTC应用程序。将原生WebRTC应用程序与Visual Studio链接

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

构建完成我试图创建一个新的Visual Studio控制台项目并添加以下代码后:

与使用下列指南的Visual Studio(2015年)使用

我编的WebRTC

#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; 
} 

将构建目录添加到包含搜索路径工作正常,但我无法链接应用程序,搜索构建目录的lib文件并将它们添加到链接器只添加更多的链接错误,因为有一大堆,我怀疑他们中的一些不应该链接到我的应用程序。

什么是链接应用程序的正确方法,以及如何知道我使用的功能.lib文件驻留在哪里?

+0

什么是链接错误说? – Matt

+0

请参阅我对Martin Bonner的回答的评论。链接到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

随意使用位于src/webrtc/build'目录内的'merge_libs.py'脚本。它会生成一个webrtc.lib文件。如果你感兴趣,我还维护一个构建脚本的集合:https://github.com/aisouard/libwebrtc –

+0

这是一个随机依赖的混乱!这使得事情变得更糟,因为设置'is_component_build = true'似乎没有效果。所以基本上这会静态连接世界。为什么我只想在任何应用程序中使用audio_confrence_mixer! – dashesy

+1

@dashesy链接器将有望剥离任何不需要的东西,但是,这是非常麻烦的。然而,最新的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 __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

相关问题