【问题标题】:MongoDB, ZeroMQ and CMongoDB、ZeroMQ 和 C
【发布时间】:2013-11-14 07:39:37
【问题描述】:

我有一个很大的问题,

我有一些使用 ZeroMQ 和 C 的代码,以及另一个使用 MongoDB 和 C 的代码,现在我必须合并这些代码,但是当我尝试使用这个命令进行编译时:

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

我得到了这个错误堆栈:

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

当我安装 Mongo-C-Driver 时:

我使用 make STD=c89 来解决 MongoDB-C-api 和 ZeroMQ-C-api 之间的冲突,在我的 logger.c 文件中我定义了错误堆栈要求的变量,但它没有不行。

【问题讨论】:

    标签: c mongodb zeromq mongodb-c


    【解决方案1】:

    您应该使用 --std=c99

    c89 也是一个有效的旧标准,这就是您收到错误的原因。

    【讨论】:

      【解决方案2】:

      您不必使用--std=c99

      如果您正在为 c++(或 c++11)编译,您可以在包含之前定义它:

      #define MONGO_HAVE_STDINT
      #include "mongo.h"
      

      这告诉 mongo c 驱动程序 #include <stdint.h> 存在于系统上,并将正确定义 int64_t

      或者,您可以使用:

      #define MONGO_HAVE_UNISTD
      #include "mongo.h"
      

      如果您改用#include <unistd.h>

      更多详情请见https://github.com/mongodb/mongo-c-driver/blob/master/src/bson.h#L52

      【讨论】:

        【解决方案3】:

        错误是:

        /usr/local/include/bson.h:63:2: error: #error 必须使用 c99 编译或定义 MONGO_HAVE_STDINT、MONGO_HAVE_UNISTD、MONGO_USE__INT64 或 MONGO_USE_LONG_INT。

        所以在头文件 bson.h 中从第 52 行到第 66 行注释

        有点像 typedef long long int ..

        【讨论】:

        • 你能澄清你的答案吗?不确定您的意思是“某物看起来像……”
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多