2
         
    $ g++ -lthrift -Wall thriftfs.cpp cassandra_constants.cpp Cassandra.cpp cassandra_types.cpp -o thriftfs -I/usr/local/include/thrift -L/usr/local/lib


        在 /usr/local/include/thrift/protocol/TProtocol.h:23:0 包含的文件中,
                         来自 /usr/local/include/thrift/TProcessor.h:24,
                         来自 Cassandra.h:10,
                         从 t`在此处输入代码`hriftfs.cpp:4:
        /usr/local/include/thrift/transport/TTransport.h:34:1: 错误:'uint32_t' 没有命名类型

        /usr/local/include/thrift/transport/TTransport.h:156:29:错误:ISO C++ 禁止声明没有类型的“buf”[-fpermissive]

        在 /usr/local/include/thrift/TProcessor.h:24:0 包含的文件中,
                         来自 Cassandra.h:10,
                         来自 thriftfs.cpp:4:
        /usr/local/include/thrift/protocol/TProtocol.h:184:1:错误:'uint32_t' 没有命名类型

        在 Cassandra.h:10:0 包含的文件中,
                         来自 thriftfs.cpp:4:
        /usr/local/include/thrift/TProcessor.h:72:57: 错误: 'uint32_t' 尚未声明

        在 cassandra_types.h:11:0 包含的文件中,
                         来自 Cassandra.h:11,
                         来自 thriftfs.cpp:4:
        /usr/local/include/thrift/TApplicationException.h:94:3:错误:'uint32_t' 没有命名类型

        在 Cassandra.h:11:0 包含的文件中,
                         来自 thriftfs.cpp:4:
        cassandra_types.h:85:16: 错误: 'uint8_t' 没有命名类型
        在 Cassandra.h:11:0 包含的文件中,
                         来自 thriftfs.cpp:4:
        cassandra_types.h:142:3:错误:“uint32_t”没有命名类型

        在 Cassandra.h:11:0 包含的文件中,
                         来自 thriftfs.cpp:4:
        cassandra_types.h:1478:16: 错误: 'uint8_t' 没有命名类型
        在 Cassandra.h:11:0 包含的文件中,
                         来自 thriftfs.cpp:4:
        cassandra_types.h:1812:3: 错误: 'uint32_t' 没有命名类型

        在 thriftfs.cpp:4:0 包含的文件中:
        Cassandra.h:217:3:错误:“uint32_t”没有命名类型

        Cassandra.h:4857:35:错误:'org::apache::thrift' 尚未声明
        Cassandra.h:4857:62:错误:在 '*' 标记之前应有 ',' 或 '...'
        Cassandra.h:4859:71:错误:无法声明指向“void”成员的指针
        Cassandra.h:4859:145:错误:模板参数 2 无效
        Cassandra.h:4859:145:错误:模板参数 4 无效
        Cassandra.h:4860:45:错误:'org::apache::thrift' 尚未声明
        Cassandra.h:4860:72: 错误:在 '*' 标记之前需要 ',' 或 '...'

        Cassandra.h:4935:42:错误:'thrift' 不是 'org::apache' 的成员
        Cassandra.h:4935:42:注意:建议的替代方案:
        /usr/local/include/thrift/Thrift.h:75:37: 注意:'apache::thrift'
        Cassandra.h:4935:42:错误:'thrift' 不是 'org::apache' 的成员
        Cassandra.h:4935:42:注意:建议的替代方案:
        /usr/local/include/thrift/Thrift.h:75:37: 注意:'apache::thrift'
        Cassandra.h:4935:77:错误:模板参数 1 无效
        Cassandra.h:4935:105:错误:'thrift' 不是 'org::apache' 的成员
        Cassandra.h:4935:105:注意:建议的替代方案:
        /usr/local/include/thrift/Thrift.h:75:37: 注意:'apache::thrift'
        Cassandra.h:4935:105:错误:'thrift' 不是 'org::apache' 的成员
        Cassandra.h:4935:105:注意:建议的替代方案:
        /usr/local/include/thrift/Thrift.h:75:37: 注意:'apache::thrift'
        Cassandra.h:4935:140:错误:模板参数 1 无效
        Cassandra.h:在构造函数 'org::apache::cassandra::CassandraProcessor::CassandraProcessor(boost::shared_ptr)' 中:
        Cassandra.h:4898:49: 错误: 分配只读位置 '"login"[((org::apache::cassandra::CassandraProcessor*)this)->org::apache::cassandra::CassandraProcessor: :processMap_]'
        Cassandra.h:4898:49:错误:无法转换 'void (org::apache::cassandra::CassandraProcessor::*)(int32_t, int) {aka void (org::apach
4

2 回答 2

2

添加以下定义:

g++ -DHAVE_NETINET_IN_H -DHAVE_INTTYPES_H ...

或者#include <stdint.h>在包含Thrift.h在您的代码中之前添加。

请参阅THRIFT-1326的讨论。据说该问题已在 thrift 0.9 中修复。

于 2012-12-27T11:18:54.823 回答
0

看起来您的问题是编译器问题。

它找不到类型“uint32_t”

关于这个还有另一个问题:

'uint32_t' 标识符未找到错误

引用自用户templatetypedef

此类型在 C 标头中定义,该标头当前不是 C++ 标准的一部分。根据标题上的 Wikipedia 页面,它直到 VS2010 才随 Visual Studio 一起提供。

同时,您可能会通过添加将 Microsoft 的自定义整数类型映射到 C 期望的类型的 typedef 来伪造您自己的标头版本。例如:

typedef __int32 int32_t; typedef 无符号 __int32 uint32_t; /* ... 等等 ... */ 希望这会有所帮助!

于 2012-12-26T20:23:38.743 回答