2012-06-11 60 views
2

我是一個很大的問題,MongoDB的,ZeroMQ和C

我一直在使用ZeroMQ和C,以及使用的MongoDB和C另一個代碼,現在我已經合併這個代碼一些代碼,但是當我嘗試編譯使用該命令:當我安裝了蒙戈-C-驅動

In file included from /usr/local/include/mongo.h:24:0, 
       from write_log.h:13, 
       from get_by_log_code.h:6, 
       from logger.c:23: 
/usr/local/include/bson.h:63:2: error: #error Must compile with c99 or define MONGO_HAVE_STDINT, MONGO_HAVE_UNISTD, MONGO_USE__INT64, or MONGO_USE_LONG_INT. 
In file included from get_by_log_code.h:6:0, 
       from logger.c:23: 
write_log.h: In function ‘write_log’: 
write_log.h:70:2: error: incompatible type for argument 1 of ‘mongo_insert’ 
/usr/local/include/mongo.h:369:18: note: expected ‘struct mongo *’ but argument is of type ‘mongo’ 
write_log.h:70:2: error: too few arguments to function ‘mongo_insert’ 
/usr/local/include/mongo.h:369:18: note: declared here 

gcc -static -lzmq -o logg logger.c /home/lis/mongo-c-driver/libmongoc.a 

我得到這個誤差堆我已經使用make std = c89來解決MongoDB-C-api和ZeroMQ-C-api之間的衝突,我在logger.c文件中定義了錯誤堆棧要求的變量,但它沒有作品。

回答

2

您應該使用--std = C99

C89是一個有效的舊標準也是如此,這就是爲什麼你得到錯誤。

-1

錯誤是:

/usr/local/include/bson.h:63:2:錯誤:#ERROR必須與C99編譯或限定MONGO_HAVE_STDINT,MONGO_HAVE_UNISTD,MONGO_USE__INT64,或MONGO_USE_LONG_INT。

所以在頭文件bson.h從line52發表評論我要排隊66

東西看喜歡的typedef長的長整型..

+0

您能否澄清您的答案?不確定你的意思是「看起來像......」 – eykanal

0

您不必使用--std=c99

如果你編譯用於C++(或C++ 11),你可以定義此之前您包括:

#define MONGO_HAVE_STDINT 
#include "mongo.h" 

這告訴蒙戈C驅動是#include <stdint.h>系統上存在,並會正確地定義int64_t

或者,你可以使用:如果你使用#include <unistd.h>

#define MONGO_HAVE_UNISTD 
#include "mongo.h" 

代替。

有關更多詳細信息,請參見https://github.com/mongodb/mongo-c-driver/blob/master/src/bson.h#L52