我有一个非常简单的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)上运行。
有什么建议吗?
答案 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
此问题通过使用OpenSSL解决。
Why 'apt-get install openssl' did not install last version of OpenSSL?
我使用了以下内容。