如何解决未解决的包含:<mongoc.h>?

How can I resolved Unresolved inclusion: <mongoc.h>?

我是mongoc的菜鸟。我的 mongo-c-driver 是 1.6.3,我想对 mongodb 数据库做一些操作,比如创建、更新、插入和删除。但是存在如下图所示的问题。我的 eclipse CDT 包含头文件(路径:/usr/local/include),但是 IDE 仍然找不到它们:

unresolved inclusion:<mongoc.h>

有人可以给我一些建议吗?

我手动安装了 mongo-c-driver,没有使用包管理器。

包含文件在“/usr/local/include/libmongoc-1.0/”,但您已告诉 Eclipse 在“/usr/local/include/”中查找,因此自然找不到它。

您可以添加“/usr/local/include/libmongoc-1.0/”作为包含路径,或将包含的内容更改为 <libmongoc-1.0/mongoc.h>。前者可能是更明智的选择,因为将来更改包含路径比您执行包含的所有地方更容易。

命令 pkg-config 输出一个标志以在 header 所在的路径中搜索(不确定您必须提供的库名称:请与您的包管理器联系):

$ pkg-config --cflags libmongoc
-I/usr/local/include/libmongoc-1.0/

如果您使用 gcc,您的编译行必须如下所示:

gcc `pkg-config --cflags libmongoc` file.c

如果你使用一个IDE,想办法为编译提供这个。这是最好的方法,因为如果您更新库,或者如果您将项目交给具有不同 headers 位置的人,您的项目将继续正确编译。

因为您手动安装了库,所以必须

  • 要么将 libmongoc.pc 文件安装到正确的位置(man pkg-config 了解更多信息);
  • 要么手动放置标志:gcc -I/usr/local/include/libmongoc-1.0 file.c。给编译器的语法 -I/some/path 意思是:在这个地方搜索 header 文件。相应地修改IDE中的项目配置。

谢天谢地!我已经解决了。无论您在哪里配置 mongo-c-driver,例如 /usr、/usr/local 或 /usr/local/xxx(任何名称),您都可以找到 mongoc.h 和其他头文件都在libmongoc-1.0文件夹下,你应该将所有头文件(xxxx.h)复制到libmongoc-1.0文件夹和include文件夹下,然后会好的。祝大家遇到和我一样的问题。