MongoDB C驱动程序

问题描述:

我成功编译了MongoDB C Drivers并运行测试脚本,但我无法编译我自己编写的脚本。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. 

我发现,在/usr/include目录

+1

奇怪的是,你的标签表示你在Linux上,但带错误的'C'源被命名为'env_win32.c'。 mongoDB教程代码可能会在您运行的操作系统上感到困惑吗? – HeatfanJohn 2012-08-07 13:20:02

+1

您使用的是哪个版本的mongoDB C驱动程序? – HeatfanJohn 2012-08-07 21:07:29

+0

请提供包含您要编译的源代码的目录的完整路径。很可能,您正在尝试编译用于​​Win32的代码。 – HonkyTonk 2012-08-08 15:38:08

取出./src/*.c,告诉GCC编译器都在/ src目录,其中包括一些仅适用于Windows程序的C程序没有文件名ws2tcpip.h

我的工作是告诉海湾合作委员会包括驱动程序建立时建立的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的驱动程序打破了与以前版本的API的兼容性,增加了对第三个参数write_concern的支持mongo_insert函数(可以设置为null)。 docs/examples目录中提供的example.c程序不能在v0.6中编译。这个bug记录在github的CDRIVER-157c-driver