2012-06-11 33 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