我无法编译使用mongodb-cxx驱动程序的代码。一切都可以使用C驱动程序正常运行,但不能使用Cxx。我运行Fedora 28,并且已经从Fedors的官方存储库中安装了以下软件包:
mongo-c-driver-1.9.5-1.fc28.x86_64 mongo-c-driver-devel-1.9.5-1.fc28.x86_64 mongo-c-driver-libs-1.9.5-1.fc28.x86_64 mongo-cxx-driver-1.1.2-13.fc28.x86_64 mongo-cxx-driver-devel-1.1.2-13.fc28.x86_64
我尝试编译的代码不会调用任何API函数来连接数据库,但第一步是使用连接到mongodb并运行操作所需的包含文件和名称空间。我尝试编译的代码是:
#include <cstdint>
#include <iostream>
#include <vector>
#include <mongo/db/json.h>
#include <mongocxx/client.hpp>
#include <mongocxx/stdx.hpp>
#include <mongocxx/uri.hpp>
using bsoncxx::builder::stream::close_array;
using bsoncxx::builder::stream::close_document;
using bsoncxx::builder::stream::document;
using bsoncxx::builder::stream::finalize;
using bsoncxx::builder::stream::open_array;
using bsoncxx::builder::stream::open_document;
int main() {
return 0;
}
我尝试如下编译代码:
$ c ++ --std = c ++ 11 mongo-cxx.cc -o test $(pkg-config --cflags --libs libmongocxx)
在pkg-config搜索路径中找不到软件包libmongocxx。 也许您应该将包含“ libmongocxx.pc”的目录添加到 PKG_CONFIG_PATH环境变量Package'libmongocxx', 在'virtual:world'中需要,未在包含的文件中找到 /usr/include/mongo/db/json.h:20, 来自mongo-cxx.cc:4:/usr/include/mongo/bson/bsonobj.h:20:10:致命错误: boost / noncopyable.hpp:没有这样的文件或目录#include ^ ~~~~~~~~~~~~~~~~~~~~~ p
如前所述,我使用Fedora的软件包管理器来安装monogdb的cxx驱动程序,并且没有从源代码进行编译。我需要做些额外的步骤吗?
感谢您的帮助,
D。
答案 0 :(得分:1)
您正在尝试混合使用旧的C ++驱动程序和新的C ++驱动程序。您已安装的软件包mongo-cxx-driver-devel-1.1.2-13.fc28.x86_64
是寿命终止的“旧版” C ++驱动程序。它不提供pkg-config文件。
此外,您的代码似乎正在尝试同时包含旧驱动程序和新mongocxx驱动程序的标头,它们是完全独立的项目。
最后,您似乎没有安装所需的Boost接头。
因此,您需要做的是:
bsoncxx
或mongocxx
开头的标头的使用。bsoncxx
和mongocxx
标头。您将需要安装boost开发的头文件和库,并停止尝试调用pkg-config,该命令仅在找到新的C ++驱动程序时使用。