2012-08-07 171 views
1

我成功編譯了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

回答

0

取出./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