我正在尝试构建 Apache ActiveMQ-CPP 的最新版本,即 3.9.4。我已经构建了两个必需的依赖项,APR 和 OpenSSL。对于 OpenSSL,这是 1.1.0f 版本。我能够在没有 SSL 支持的情况下构建所有 4 种配置(Debug、DebugDLL、Release、ReleaseDLL)。但是,尝试使用 SSL 支持构建任何东西会导致许多错误:
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLContextSpi.cpp(186): error C3861: 'CRYPTO_malloc_init': identifier not found
..\src\main\decaf\internal\net\ssl\openssl \OpenSSLSocket.cpp(667): error C2027: use of undefined type 'X509_extension_st'
C:\OpenSource\OpenSSL\1.1.0f\include\openssl/x509.h(79): 注意:见 'X509_extension_st' 的声明
。 \src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(667): error C2227: left of '->value' must point to class/struct/union/generic type
..\src\main\ decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(667): error C2227: left of '->data' must point to class/struct/union/generic type
..\src\main\decaf\internal\net \ssl\openssl\OpenSSLSocket.cpp(670):错误 C2027:使用未定义类型“X509_extension_st”
C:\OpenSource\OpenSSL\1.1.0f\include\openssl/x509.h(79):注意:见 'X509_extension_st' 的声明
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp (670): 错误 C2227: '->value' 的左边必须指向类/结构/联合/通用类型
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(670): 错误C2227:'->length' 左侧必须指向类/结构/联合/通用类型
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(670):错误 C2660:'ASN1_item_d2i' :函数不接受 3 个参数
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(671):错误 C2027:使用未定义类型 'X509_extension_st'
C:\OpenSource\OpenSSL\1.1。 0f\include\openssl/x509.h(79): 注意: 见 ' 声明X509_extension_st'
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(671): error C2227: left of '->value' must point to class/struct/union/generic type
..\src\ main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(671): error C2227: left of '->length' must point to class/struct/union/generic type
..\src\main\decaf\internal \net\ssl\openssl\OpenSSLSocket.cpp(671): error C2198: 'X509V3_EXT_D2I': too little arguments for call
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(671):错误 C2198:“X509V3_EXT_I2V”:调用的参数太少
自从在 3.2.0 中添加支持以来,发行说明没有提及任何关于 OpenSSL 的内容。但是,ActiveMQ-CPP 3.9.4 下载中包含的 README.txt 文件指出:
如果您希望使用 SSL 传输,那么您需要在系统上安装 OpenSSL 及其包含的内容。我们建议您使用 1.0.0 或更高版本以获得最佳性能和安全性,但 0.9.8 版本也可以工作。
这个 StackOverflow 问题似乎表明我的第一个错误(见上文)暗示 ActiveMQ-CPP 不支持 OpenSSL 1.1.0。但是,在ActiveMQ-CPP Jira 站点上似乎没有提交关于缺乏 OpenSSL 1.1.0 支持的问题,并且他们自己的文档明确指出我应该能够使用“1.0.0 或更高版本”。
有谁知道 ActiveMQ-CPP 3.9.4 是否支持 OpenSSL 1.1.0?