我正在尝试将MongoDb与Qt c ++连接起来。当我构建它时没有错误,只有像;
这样的信息: - 1:警告:libboost_system.so.1.54.0,需要 /usr/local/lib/libboost_thread.so,可能与之冲突 libboost_system.so.5
然而,当我试图运行它时说:
加载共享库时出现错误:libboost_thread.so.1.54.0: 无法打开共享对象文件:没有这样的文件或目录
这是我的小代码示例,一切看起来都很好。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <mongo/client/dbclient.h>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
try
{
mongo::DBClientConnection c;
c.connect("localhost");
qDebug() << "Connected to Mongo";
}
catch (mongo::DBException &e)
{
qDebug() << "Cannot, Error : " << e.what();
}
}
MainWindow::~MainWindow()
{
delete ui;
}
您能否帮我解释为什么我会收到此错误以及如何解决?
编辑:
这也是我的.pro文件;
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = mongodbtest
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
INCLUDEPATH += /usr/local/lib/
LIBS += -pthread \
-lmongoclient \
-lboost_thread \
-lboost_system \
-lboost_regex
我发现我已经有了libboost_thread.so.1.54.0
[mg @ mg-CentOS mg] $ locate libboost_thread.so.1.54.0 /usr/local/lib/libboost_thread.so.1.54.0
答案 0 :(得分:1)
您的路径中似乎有两倍的boost库,两者似乎都在/usr/local/lib
(不好)。
最简单的解决方案是尽可能只使用一组boost库。
否则,通过在特定(非全局)位置安装boost并链接到它(我对qmake并不熟悉),可以实现最佳设置:
INCLUDEPATH += /path/to/boost/boost_1_54_0/include
QMAKE_LIBDIR += /path/to/boost/boost_1_54_0/lib
LIBS += -libboost_system.so.1.54.0 # relative link (preferred)
LIBS += /path/to/boost/boost_1_54_0/lib/libboost_thread.1.54.0.so # hard link
...