'2017/03/17'에 해당되는 글 1건

  1. 2017.03.17 [WebRTC] windows native app 빌드 환경 설정
반응형

#http://stackoverflow.com/questions/39748072/linking-native-webrtc-application-with-visual-studio


에 visual studio로 webrtc 콘솔 프로그램을 빌드하는 환경에 대한 글들이 있다. 실제로 빌드하기 위해서는 추가적으로 해야 할 것들이 더 있는데, 이번 포스팅에서는 WebRTC Windows Native App 빌드 환경 구성에 대해서 논한다.


ㅇ 환경 Visual Studio 2017

ㅇ Windows에서 빌드된 WebRTC 라이브러리


우선 Visual Studio 에서 [새 프로젝트] 에서 "win32 콘솔 응용 프로그램" 을 선택하여 다음의 코드를 넣는다.


#include "stdafx.h"


#define WEBRTC_WIN


#include <webrtc/api/peerconnectionproxy.h>

#include <webrtc/api/peerconnectioninterface.h>

#include <webrtc/api/peerconnectionfactoryproxy.h>


int main()

{

auto pcf = webrtc::CreatePeerConnectionFactory();

}

 


1. include path 설정

 설루션 탐색기에서 솔루션을 선택하고 오른쪽 마우스로 "속성"을 클릭한다.

구성의 플랫폼을 x64로 설정하고 "C/C++" 을 클릭하고 일반 부분에서 "추가 포함 디렉토리"를 선택, 이전 포스팅에서 소스를 받았던 폴더를 지정해 준다. (예: E:\webrtc-checkout\src ) include path를 지정하면 빨간색 부분들이 사라진다.


2. #define NOMINMAX 설정

 빌드할때 다음의 오류가 발생한다.

 std:min 부분인데 #define NOMINMAX 를 설정해 주면 오류가 사라진다. (http://bspfp.pe.kr/archives/591 참고) 


3. _CRT_SECURE_NO_WARNINGS전처리 추가

 솔루션 탐색기에서 솔루션을 선택하고 오른쪽 마우스로 "속성"을 클릭한다.

 "C/C++"에서 "전처리기"를 선택, "전처리기 정의 부분에 _CRT_SECURE_NO_WARNINGS를 추가해준다.


4. library path 설정 및 추가

 솔루션 탐색기에서 솔루션을 선택하고 오른쪽 마우스로 "속성"을 클릭한다. VC++ 디렉토리에 보면 "라이브러리 디렉토리" 부분이 있는데, webrtc 빌드한 폴더중 obj 가 나타나는 폴더까지 설정한다. (예를 들어 e:\webrtc-checkout\src\out\x64 에 obj 폴더가 나타나면 e:\webrtc-checkout\src\out\x64 을 포함시켜 준다."


 [솔루션 속성]에서 "링커" 부분의 "입력"에 "추가 종속성에 다음의 라이브러리를 추가해 준다.(2017년 3월 17일 버전,,webrtc 라이브러리들이 바뀌면서 이름들이 변경될 수 있다.)

./clang_x64/obj/third_party/libjpeg_turbo/libjpeg.lib

./clang_x64/obj/third_party/libjpeg_turbo/simd.lib

./clang_x64/obj/third_party/libjpeg_turbo/simd_asm.lib

./clang_x64/obj/third_party/libyuv/libyuv_internal.lib

./obj/testing/gmock/gmock.lib

./obj/testing/gtest/gtest.lib

./obj/third_party/boringssl/boringssl.lib

./obj/third_party/boringssl/boringssl_asm.lib

./obj/third_party/expat/expat.lib

./obj/third_party/libsrtp/libsrtp.lib

./obj/third_party/libvpx/libvpx.lib

./obj/third_party/libvpx/libvpx_yasm.lib

./obj/third_party/openmax_dl/dl/dl.lib

./obj/third_party/opus/opus.lib

./obj/third_party/protobuf/protobuf_full.lib

./obj/third_party/protobuf/protobuf_lite.lib

./obj/third_party/protobuf/protoc_lib.lib

./obj/third_party/usrsctp/usrsctp.lib

./obj/third_party/winsdk_samples/winsdk_samples.lib

./obj/third_party/yasm/yasm_utils.lib

./obj/webrtc/api/audio_codecs/builtin_audio_decoder_factory.lib

./obj/webrtc/api/libjingle_peerconnection_api.lib

./obj/webrtc/audio/audio.lib

./obj/webrtc/audio/utility/audio_frame_operations.lib

./obj/webrtc/base/rtc_base.lib

./obj/webrtc/base/rtc_base_approved.lib

./obj/webrtc/base/rtc_numerics.lib

./obj/webrtc/base/rtc_task_queue.lib

./obj/webrtc/call/call.lib

./obj/webrtc/common_audio/common_audio.lib

./obj/webrtc/common_audio/common_audio_sse2.lib

./obj/webrtc/common_video/common_video.lib

./obj/webrtc/logging/rtc_event_log_impl.lib

./obj/webrtc/logging/rtc_event_log_parser.lib

./obj/webrtc/logging/rtc_event_log_proto.lib

./obj/webrtc/media/rtc_media.lib

./obj/webrtc/media/rtc_media_base.lib

./obj/webrtc/modules/audio_coding/ana_config_proto.lib

./obj/webrtc/modules/audio_coding/ana_debug_dump_proto.lib

./obj/webrtc/modules/audio_coding/audio_coding.lib

./obj/webrtc/modules/audio_coding/audio_encoder_interface.lib

./obj/webrtc/modules/audio_coding/audio_format_conversion.lib

./obj/webrtc/modules/audio_coding/audio_network_adaptor.lib

./obj/webrtc/modules/audio_coding/builtin_audio_decoder_factory_internal.lib

./obj/webrtc/modules/audio_coding/cng.lib

./obj/webrtc/modules/audio_coding/g711.lib

./obj/webrtc/modules/audio_coding/g722.lib

./obj/webrtc/modules/audio_coding/ilbc.lib

./obj/webrtc/modules/audio_coding/isac.lib

./obj/webrtc/modules/audio_coding/isac_c.lib

./obj/webrtc/modules/audio_coding/isac_common.lib

./obj/webrtc/modules/audio_coding/isac_fix.lib

./obj/webrtc/modules/audio_coding/legacy_encoded_audio_frame.lib

./obj/webrtc/modules/audio_coding/neteq.lib

./obj/webrtc/modules/audio_coding/neteq_unittest_proto.lib

./obj/webrtc/modules/audio_coding/pcm16b.lib

./obj/webrtc/modules/audio_coding/red.lib

./obj/webrtc/modules/audio_coding/rent_a_codec.lib

./obj/webrtc/modules/audio_coding/rtc_event_log_source.lib

./obj/webrtc/modules/audio_coding/webrtc_opus.lib

./obj/webrtc/modules/audio_conference_mixer/audio_conference_mixer.lib

./obj/webrtc/modules/audio_device/audio_device.lib

./obj/webrtc/modules/audio_mixer/audio_frame_manipulator.lib

./obj/webrtc/modules/audio_mixer/audio_mixer_impl.lib

./obj/webrtc/modules/audio_processing/audioproc_debug_proto.lib

./obj/webrtc/modules/audio_processing/audioproc_protobuf_utils.lib

./obj/webrtc/modules/audio_processing/audioproc_unittest_proto.lib

./obj/webrtc/modules/audio_processing/audio_processing.lib

./obj/webrtc/modules/audio_processing/audio_processing_sse2.lib

./obj/webrtc/modules/bitrate_controller/bitrate_controller.lib

./obj/webrtc/modules/congestion_controller/congestion_controller.lib

./obj/webrtc/modules/desktop_capture/desktop_capture.lib

./obj/webrtc/modules/desktop_capture/desktop_capture_differ_sse2.lib

./obj/webrtc/modules/desktop_capture/primitives.lib

./obj/webrtc/modules/media_file/media_file.lib

./obj/webrtc/modules/pacing/pacing.lib

./obj/webrtc/modules/remote_bitrate_estimator/bwe_simulator_lib.lib

./obj/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator.lib

./obj/webrtc/modules/rtp_rtcp/rtp_rtcp.lib

./obj/webrtc/modules/utility/utility.lib

./obj/webrtc/modules/video_capture/video_capture.lib

./obj/webrtc/modules/video_capture/video_capture_internal_impl.lib

./obj/webrtc/modules/video_capture/video_capture_module.lib

./obj/webrtc/modules/video_coding/video_coding.lib

./obj/webrtc/modules/video_coding/video_coding_utility.lib

./obj/webrtc/modules/video_coding/webrtc_h264.lib

./obj/webrtc/modules/video_coding/webrtc_i420.lib

./obj/webrtc/modules/video_coding/webrtc_vp8.lib

./obj/webrtc/modules/video_coding/webrtc_vp9.lib

./obj/webrtc/modules/video_processing/video_processing.lib

./obj/webrtc/modules/video_processing/video_processing_sse2.lib

./obj/webrtc/ortc/ortc.lib

./obj/webrtc/p2p/libstunprober.lib

./obj/webrtc/p2p/rtc_p2p.lib

./obj/webrtc/pc/libjingle_peerconnection.lib

./obj/webrtc/pc/rtc_pc.lib

./obj/webrtc/stats/rtc_stats.lib

./obj/webrtc/system_wrappers/field_trial_default.lib

./obj/webrtc/system_wrappers/metrics_default.lib

./obj/webrtc/system_wrappers/system_wrappers.lib

./obj/webrtc/tools/chart_proto.lib

./obj/webrtc/tools/command_line_parser.lib

./obj/webrtc/tools/event_log_visualizer_utils.lib

./obj/webrtc/tools/frame_editing_lib.lib

./obj/webrtc/tools/reference_less_video_analysis_lib.lib

./obj/webrtc/tools/video_quality_analysis.lib

./obj/webrtc/video/video.lib

./obj/webrtc/voice_engine/audio_coder.lib

./obj/webrtc/voice_engine/audio_level.lib

./obj/webrtc/voice_engine/file_player.lib

./obj/webrtc/voice_engine/file_recorder.lib

./obj/webrtc/voice_engine/voice_engine.lib

./obj/webrtc/webrtc.lib

./obj/webrtc/webrtc_common.lib 

winmm.lib

dmoguids.lib

wmcodecdspuuid.lib

amstrmid.lib

msdmo.lib

crypt32.lib

iphlpapi.lib

secur32.lib

Strmiids.lib


5. 다시 빌드하게 되면 


오류 LNK2038 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MDd_DynamicDebug'(WebRTCApp.obj에 위치) 값과 일치하지 않습니다.


오류가 발생한다. 이때 다음 그림으로 가서 런타임 라이브리를 "다중 스레드 디버그(/MTd 로 바꿔준다.)


다시 빌드하면 빌딩 된다.



반응형
Posted by alias
,