使用openssl而不是boringssl时webrtc生成错误

使用openssl而不是boringssl时webrtc生成错误,openssl,webrtc,Openssl,Webrtc,我正在尝试使用openssl而不是boringssl构建webrtc的稳定分支57。以下是我的命令: 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_bas

我正在尝试使用openssl而不是boringssl构建webrtc的稳定分支57。以下是我的命令:

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;
};
struct dtls1\u重新传输\u状态{
EVP_CIPHER_CTX*加密_write_CTX;/*加密状态*/
EVP_MD_CTX*写入_散列;/*用于mac生成*/
#ifndef OPENSSL\u NO\u COMP

COMP_CTX*compress;/*compression*/发现问题出在WebRtc的opensslstreamadapter.cc文件中。包括以下内容:

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

颠倒顺序后,编译将进行。

结果发现问题出在WebRtc的opensslstreamadapter.cc文件中。包含的内容如下所示:

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

颠倒顺序后,编译完成。

<代码>注释:C++不支持默认INT/COR> > OpenSSL必须用C编译器编译,而不是C++编译器。也可以在OpenSSL wiki上看到。以后,可以用C++编译器编译程序和应用程序。但是库必须用C编译器编译。使用
no comp
ifndef OPENSSL\u no\u comp
来自
。也许您可以尝试将其包括在
dtls1.h
中,也就是说,添加
#包括“opensslconf.h” >代码> dts1. h < /c> .>代码>注释:C++不支持默认INT/COM>。OpenSSL必须用C编译器编译,而不是C++编译器。也可以在OpenSSL wiki上看到。以后,可以用C++编译器编译程序和应用程序。但是库必须用C编译器来编译。ode>IFNDEFOpenSSL\u NO\u COMP
来自
。也许您可以尝试将其包含在
dtls1.h
中?也就是说,添加
#将“opensslconf.h”
包含到
dtls1.h
中。