2017-02-02 8 views
0

私はweingsの安定したブランチ57をboringsslの代わりにopensslを使って構築しようとしています。ここに私のコマンドです:boringsslの代わりにopensslを使用したときにwebrtcでエラーを作成する

gn gen out/Default --args="is_component_build=false rtc_build_ssl=false rtc_ssl_root=""C:\DevThirdParty\openssl-1.0.2k""" 
ninja -C out/Default 

しかし、ビルドは次のエラーで途中で失敗します。ここでは

[12/1633] CXX obj/webrtc/base/rtc_base/opensslstreamadapter.obj 
FAILED: obj/webrtc/base/rtc_base/opensslstreamadapter.obj 
ninja -t msvc -e environment.x64 -- "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64/cl.exe" /nologo /showIncludes /FC @obj/webrtc/base/rtc_base/opensslstreamadapter.obj.rsp /c ../../webrtc/base/opensslstreamadapter.cc /Foobj/webrtc/base/rtc_base/opensslstreamadapter.obj /Fd"obj/webrtc/base/rtc_base_cc.pdb" 
c:\devthirdparty\openssl-1.0.2k\openssl\dtls1.h(139): error C2143: syntax error: missing ';' before '*' 
c:\devthirdparty\openssl-1.0.2k\openssl\dtls1.h(139): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c:\devthirdparty\openssl-1.0.2k\openssl\dtls1.h(139): error C2238: unexpected token(s) preceding ';' 
c:\devthirdparty\openssl-1.0.2k\openssl\dtls1.h(143): error C2143: syntax error: missing ';' before '*' 
c:\devthirdparty\openssl-1.0.2k\openssl\dtls1.h(143): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c:\devthirdparty\openssl-1.0.2k\openssl\dtls1.h(143): error C2238: unexpected token(s) preceding ';' 
c:\devthirdparty\openssl-1.0.2k\openssl\dtls1.h(254): error C3646: 'rbuf': unknown override specifier 
c:\devthirdparty\openssl-1.0.2k\openssl\dtls1.h(254): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
c:\devthirdparty\openssl-1.0.2k\openssl\dtls1.h(255): error C3646: 'rrec': unknown override specifier 
c:\devthirdparty\openssl-1.0.2k\openssl\dtls1.h(255): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
[21/1633] CXX obj/webrtc/modules/modules_tests/screen_capturer_integration_test.obj 
ninja: build stopped: subcommand failed. 

はdtls1.hからコードスニペットです:

struct dtls1_retransmit_state { 
    EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ 
    EVP_MD_CTX *write_hash;  /* used for mac generation */ 
# ifndef OPENSSL_NO_COMP 
    COMP_CTX *compress;   /* compression */ <=== LINE 139 
# else 
    char *compress; 
# endif 
    SSL_SESSION *session;       <== LINE 143 
    unsigned short epoch; 
}; 

は別がありますステップ私は行方不明ですか?よろしく。

+0

* '注意:C++はdefault-intをサポートしていません。 '* - OpenSSLはC++コンパイラではなくCコンパイラでコンパイルする必要があります。 OpenSSL wikiの[コンパイルとインストール](https://wiki.openssl.org/index.php/Compilation_and_Installation)も参照してください。後で、C++コンパイラでプログラムやアプリケーションをコンパイルできます。しかし、ライブラリはCコンパイラで構築する必要があります。 – jww

+0

'no-comp'でOpenSSLを設定しましたか? 'ifndef OPENSSL_NO_COMP'は' 'から来ます。たぶんあなたは 'dtls1.h'にそれを含めることができますか?つまり、 '#include" opensslconf.h "'を 'dtls1.h'に追加します。 – jww

答えて

0

問題はWebRtcのopensslstreamadapter.ccファイルにあります。インクルードは以下のようになります。

#include <openssl/dtls1.h> 
#include <openssl/ssl.h> 

注文を元に戻した後、コンパイルが完了します。

関連する問題