编译了webRTC Windows源码之后,想使用编译出来的库写一个demo出来,但是又不知到怎么下手。就想通过源码中带的示例peerconnection_client和peerconnection_server来学webRTC peerconnection API的使用方法。

为了更方便的调试和了解webRTC库的使用,就萌生了把peerconnection_client和编译出来的webRTC的静态库,创建一个VS工程的想法。经过两天的努力,终于可以运行起来了。

环境:

win10+VS2015+webRTC 58

1.创建空的Win32项目

2.将peerconnection_client的源码添加到工程中

这里需要注意的是我们应当把工程中源文件依赖的的

conductor.h
defaults.h
flagdefs.h
main_wnd.h
peer_connection_client.h

等头文件,从

#include "webrtc/examples/peerconnection/client/main_wnd.h"
....

改为

#include "main_wnd.h"
....

否则一会我们把webRTC源码添加到工程中来的时候,会依赖到源码里面原来的头文件

3.把webRTC源码拷贝到工程源码目录下

因为demo里面依赖了webRTC的头文件,现在对webRTC源码还不是很熟悉的情况下,不太方便把依赖到的头文件拆分出来,所以就把源码拷贝进来了。

除此之外,还需要把webRTC源码中libYUV和json的头文件一起拷贝过来

这里我吧webRTC源码中的examples目录删除掉了

4.添加windows头文件和宏定义

在main.cc中包含Windows.h

在项目属性-->C/C++-->预处理器-->预处理器定义中添加宏定义

WEBRTC_WIN
WIN32_LEAN_AND_MEAN
NOMINMAX
WIN32

这里需要注意,我编译的webRTC库是x64 debug的,所以工程也创建的x64 debug的

5.添加编译的webRTC静态库和demo依赖的Windows库到工程中

完成上面几个步骤,编译一下我们的工程,报的错误应该都是链接问题了,下面我们就添加webRTC编译出来的库和demo依赖的windows库到工程中

拷贝webRTC静态库到工程源码目录

然后在项目属性-->连接器-->附加库目录,添加libs目录

项目属性-->连接器-->输入-->附加依赖项,添加库的依赖

ana_config_proto.lib
ana_debug_dump_proto.lib
audio.lib
audioproc_debug_proto.lib
audioproc_protobuf_utils.lib
audioproc_unittest_proto.lib
audio_coder.lib
audio_coding.lib
audio_conference_mixer.lib
audio_device.lib
audio_encoder_interface.lib
audio_format_conversion.lib
audio_frame_manipulator.lib
audio_frame_operations.lib
audio_mixer_impl.lib
audio_network_adaptor.lib
audio_processing.lib
audio_processing_sse2.lib
bitrate_controller.lib
boringssl_asm.lib
builtin_audio_decoder_factory.lib
builtin_audio_decoder_factory_internal.lib
bwe_simulator_lib.lib
call.lib
channel_transport.lib
chart_proto.lib
cng.lib
command_line_parser.lib
common_audio.lib
common_audio_sse2.lib
common_video.lib
congestion_controller.lib
desktop_capture.lib
desktop_capture_differ_sse2.lib
dl.lib
event_log_visualizer_utils.lib
expat.lib
field_trial_default.lib
file_player.lib
file_recorder.lib
frame_editing_lib.lib
g711.lib
g722.lib
gmock.lib
gtest.lib
ilbc.lib
isac.lib
isac_c.lib
isac_common.lib
isac_fix.lib
legacy_encoded_audio_frame.lib
level_indicator.lib
libjingle_peerconnection.lib
libjingle_peerconnection_api.lib
libjpeg.lib
libsrtp.lib
libstunprober.lib
libvpx.lib
libvpx_yasm.lib
libyuv_internal.lib
media_file.lib
metrics_default.lib
neteq.lib
neteq_unittest_proto.lib
opus.lib
ortc.lib
pacing.lib
pcm16b.lib
primitives.lib
protobuf_full.lib
protoc_lib.lib
red.lib
reference_less_video_analysis_lib.lib
remote_bitrate_estimator.lib
rent_a_codec.lib
rtc_base.lib
rtc_base_approved.lib
rtc_event_log_impl.lib
rtc_event_log_parser.lib
rtc_event_log_proto.lib
rtc_event_log_source.lib
rtc_media.lib
rtc_media_base.lib
rtc_numerics.lib
rtc_p2p.lib
rtc_pc.lib
rtc_stats.lib
rtc_task_queue.lib
rtc_task_runner.lib
rtp_rtcp.lib
simd.lib
simd_asm.lib
system_wrappers.lib
usrsctp.lib
utility.lib
video.lib
video_capture.lib
video_capture_internal_impl.lib
video_capture_module.lib
video_coding.lib
video_coding_utility.lib
video_processing.lib
video_processing_sse2.lib
video_quality_analysis.lib
voice_engine.lib
webrtc.lib
webrtc_common.lib
webrtc_h264.lib
webrtc_i420.lib
webrtc_opus.lib
webrtc_vp8.lib
webrtc_vp9.lib
winsdk_samples.lib
yasm_utils.lib
ws2_32.lib
msdmo.lib
dmoguids.lib
wmcodecdspuuid.lib
boringssl.dll.lib
Winmm.lib
Secur32.lib
strmiids.lib

这里面有webRTC库的依赖和windows库的依赖,可能有一些webRTC库没有使用到,这里先放进来,以后再拆分。

现在编译运行,会报下面的错误,因为boringssl是链接的动态库

我们把编译webRTC生成的boringssl.dll拷贝到我们的工程生成的可执行文件目录下

然后Ctrl+F5运行工程

配合peerconnection_server运行一下,注意这里需要台电脑来运行peerconnection_client

后面的计划就是分析一下peerconnection_server和peerconnection_client来学习webRTC peerconnection API的使用

webRTC peerconnection_client demo创建VS工程的更多相关文章

  1. iOS创建子工程

    实际开发中,我们可能会同时开发好几个端,比如楼主目前开发的家教平台,需要老师端,家长端,助教端三个端.有很多工具方法,或者封装的自定义控件都是可以复用的.我们就可以把公用的代码抽取出去,新建一个工程, ...

  2. Activiti:创建activiti工程

    Activiti:创建activiti工程 一.Activiti下载: 1,Activiti下载地址:https://github.com/Activiti/Activiti/releases 2,A ...

  3. 三、使用maven创建scala工程(scala和java混一起)

    本文先叙述如何配置eclipse中maven+scala的开发环境,之后,叙述如何实现spark的本地运行.最后,成功运行scala编写的spark程序. 刚开始我的eclipse+maven环境是配 ...

  4. Xcode创建子工程以及工程依赖

    https://www.jianshu.com/p/f2bc7d155a86 阅读 7858 视频地址 如果文章不详细,点击看操作视频 项目需求:代码抽层,业务逻辑和数据处理要高度抽离,模块化,需要将 ...

  5. Drools创建Maven工程

    1.说明 本文介绍创建Drools的Maven工程的方法, 仅使用Eclipse开发工具, 不使用Drools的相关插件, 先创建一个Maven工程, 然后引入Drools的相关依赖即可, 最后再写一 ...

  6. Eclipse创建Maven工程报错

    问题 用Eclipse创建maven工程的时候,总是会报错,例如提示: Unable to create project from archetype [org.apache.maven.archet ...

  7. MyEclipse创建Maven工程

    先要在MyEclipse中对Maven进行设置:

  8. Vivado SDK 2014.2 创建新工程后,BSP版本不对的解决办法

    问题描述如下: 1. 使用Vivado SDK 2014.2已经创建了工程,但是此时,hdf文件增加了外设,需要重新创建工程以更新SDK中的外设描述: 2. 使用新的hdf创建工程后,发现system ...

  9. 关于Xcode6创建的工程在Xcode5打开

    Xcode6创建的工程在Xcode5打开- 4.0只显示3.5大小的问题 只需要在工程里添加Default-568h@2x.png,即可以解决

随机推荐

  1. ASM9260T开发板使用

    ifconfig eth0 192.168.1.66 netmask 255.255.255.0 up   //设备iproute add default gw 192.168.1.1   //添加网 ...

  2. win8 商店应用 设计风格原则

    共八条: 1,突出内容(数据). a,仅在屏幕上保留最相关的元素:移除线条.框和不必要的图形效果:限制屏幕上持久显示的导航框,如选项卡. b,交互尽量直接在内容上,直接控制内容来完成操作,而不是使用控 ...

  3. 如何切换到自定义的Activity

    一. 新建一个空的工程,并添加一个按钮 二.新建一个布局文件,命名为my_aty, 并添加一个文本 三.新建一个类,命名为MyAty,并重写onCreate函数 public void onCreat ...

  4. L137

    Uncontacted Tribes at Risk Amid ‘Worrying' Surge in Amazon Deforestation Illegal loggers and militia ...

  5. jQuery attr 与 prop 区别最简单分析

    比较经典的解释: 在处理html元素本身就带有的固有属性时,使用prop方法,对于html元素中,我们自己定义的dom属性时,使用attr方法. 而咱自己的理解是: attr会忠实的获取设置dom标签 ...

  6. 题目一:给出一个n,代表有从1到n的数字[1,2,3,··· n],问可以构成多少种二叉搜索树?

    题目一:给出一个n,代表有从1到n的数字[1,2,3,··· n],问可以构成多少种二叉搜索树? 一开始的想法是直接递归构造,时间复杂度是指数上升:后来想法是找规律:先看例子: n = 1, 有一个元 ...

  7. 一个通用Makefile详解

    我们在Linux环境下开发程序,少不了要自己编写Makefile,一个稍微大一些的工程下面都会包含很多.c的源文 件. 如果我们用gcc去一个一个编译每一个源文件的话,效率会低很多,但是如果我们可以写 ...

  8. GO语言打包ICO图标

    1. go get github.com/akavel/rsrc2. 创建manifest文件, 命名:main.exe.manifest : <?xml version="1.0&q ...

  9. python tricks —— datetime 删除日期中的前导 0

    >> from datetime import datetime >> now = datetime.now() >> now.strftime('%Y-%m-%d ...

  10. 使用Hydra通过ssh破解密码

    Hydra是非常高效的网络登录破解工具,它可以对多种服务程序执行暴力破解(SSH.VNC等等). 防止这种攻击其实很容易,方法很多.以SSH为例: Ubuntu:使用Port Knocking隐藏SS ...