调用mongocxx :: instance返回“ mongoc:无法初始化OpenSSL”

时间:2018-08-16 09:52:40

标签: c++ mongodb

我有一个非常简单的MongoDB应用程序,它可以连接到MongoDB数据库并可以正常工作。

然后我将连通性调用添加到大型,复杂的旧版应用程序中,并且在我调用时:

mongocxx::instance(即第一个MongoDB库调用)

我收到以下答复:

  

2018/08/16 10:20:59.0499: [16856]: ERROR: mongoc: Failed to initialize OpenSSL.

似乎在MongoDB C库中对SSL_CTX_new的低级调用返回了空指针。

我不太确定为什么会这样。我什至可以重新编译简单的MongoDB应用程序并将其链接到大型遗留应用程序使用的所有库(对ldd的调用现在是相同的),但是简单应用程序仍然可以正常工作。

这正在使用以下MongoDB驱动程序:

mongo-c-driver-1.11.0

mongo-cxx-driver-r3.3.0

使用OpenSSL 1.1.0编译并在RHEL7 box(7.4)上运行。

有什么建议吗?

1 个答案:

答案 0 :(得分:-1)

我只是遇到了同样的错误。

<罢工> 它通过更改cmake的选项解决了该问题。 这样,设置一个选项就可以使用。

  

cmake -DENABLE_SSL=OFF ..

在以下方法中,发生OpenSSL初始化错误。

  

cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP = NO

我想知道如何使用“ ENABLE_AUTOMATIC_INIT_AND_CLEANUP”防止初始化错误。

https://github.com/mongodb/mongo-c-driver/blob/r1.10/NEWS#L935

https://github.com/mongodb/mongo-c-driver/blob/2edd3b2a91171a5da88e9282ffb6a3efbbc2bd91/src/libmongoc/CMakeLists.txt#L225

此问题通过使用OpenSSL解决。

Why 'apt-get install openssl' did not install last version of OpenSSL?

我使用了以下内容。

  • openssl-1.1.0f
  • mongo-c-driver-1.10.1
  • mongo-cxx-driver-r3.3.0