1

我成功编译了 MongoDB C 驱动程序并运行了测试脚本,但我无法编译我自己编写的脚本。

以下是命令及其错误输出。

$ gcc -Isrc --std=c99 ./src/*.c -I ./src/ tutorial.c -o tutorial -D_POSIX_C_SOURCE=200112L

./src/env_win32.c:27:53: fatal error: ws2tcpip.h: No such file or directory
compilation terminated.

我发现目录ws2tcpip.h中没有文件名/usr/include

4

1 回答 1

0

取出./src/*.c, 告诉 gcc 编译 /src 目录中的所有 c 程序,其中包括一些仅限 Windows 的程序。

对我有用的是告诉 gcc 包括在libmongoc.so构建驱动程序时构建的内容。

以下命令对我有用。我的驱动程序在目录“mongo-c-driver”中。

gcc --std=c99 -I mongo-c-driver/src -o tutorial tutorial.c mongo-c-driver/libmongoc.so

在我看来,mongodb C API 文档在这方面有点问题。此外,最新的头文件与教程中显示的源代码不匹配。例如mongo-insert在 v0.6 标头中需要 4 个参数,但本教程仅显示 2 个参数。

在研究这个问题并尝试通过自己安装 mongoDB 和 C 驱动程序来重新创建它时,我发现驱动程序的 v0.6 通过添加对函数write_concern的第四个参数mongo_insert(可以设置为null)。目录中提供的example.c程序docs/examples在 v0.6 中无法编译。此错误记录在 github 中的c-driver补丁CDRIVER-157中。

于 2012-08-09T02:13:34.340 回答