$ 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
问问题
2908 次
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”
关于这个还有另一个问题:
引用自用户templatetypedef
此类型在 C 标头中定义,该标头当前不是 C++ 标准的一部分。根据标题上的 Wikipedia 页面,它直到 VS2010 才随 Visual Studio 一起提供。
同时,您可能会通过添加将 Microsoft 的自定义整数类型映射到 C 期望的类型的 typedef 来伪造您自己的标头版本。例如:
typedef __int32 int32_t; typedef 无符号 __int32 uint32_t; /* ... 等等 ... */ 希望这会有所帮助!
于 2012-12-26T20:23:38.743 回答