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
目录
答
取出./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-157的c-driver。
奇怪的是,你的标签表示你在Linux上,但带错误的'C'源被命名为'env_win32.c'。 mongoDB教程代码可能会在您运行的操作系统上感到困惑吗? – HeatfanJohn 2012-08-07 13:20:02
您使用的是哪个版本的mongoDB C驱动程序? – HeatfanJohn 2012-08-07 21:07:29
请提供包含您要编译的源代码的目录的完整路径。很可能,您正在尝试编译用于Win32的代码。 – HonkyTonk 2012-08-08 15:38:08