【发布时间】:2012-01-26 13:01:42
【问题描述】:
我想在 Xcode 中使用 Thrift 0.8.0 c++ 库。因此我用
配置了 Thrift./configure --without-java --without-python --without-ruby --without-php --enable-static
我将静态库拖到我的项目中。然后我将“标题搜索路径”设置为“/usr/local/include/thrift”和“/opt/local/include”(因为我通过 macports 安装了 boost)。
我可以按照here 的描述运行 Thrift Server
当我尝试运行客户端时,它会抛出几个错误。
/usr/local/include/thrift/transport/TSocket.h
sockaddr* getCachedAddress(socklen_t* len) const;
/usr/local/include/thrift/transport/TSocket.h:216:3: 错误:未知类型名称'sockaddr'
void setCachedAddress(const sockaddr* addr, socklen_t len);
/usr/local/include/thrift/transport/TSocket.h:216:30: 错误:未知类型名称'socklen_t'
void setCachedAddress(const sockaddr* addr, socklen_t len);
/usr/local/include/thrift/transport/TSocket.h:237:31: 错误:未知类型名称'sockaddr'
void setCachedAddress(const sockaddr* addr, socklen_t len);
/usr/local/include/thrift/transport/TSocket.h:237:47: 错误:未知类型名称'socklen_t'
/usr/local/include/thrift/transport/TSocket.h:290:5: 错误:未知类型名称'sockaddr_in'
union {
sockaddr_in ipv4;
sockaddr_in6 ipv6;
} cachedPeerAddr_;
/usr/local/include/thrift/transport/TSocket.h:291:5: 错误:未知类型名称'sockaddr_in6'
boost::shared_ptr<TTransport> transport(new TBufferedTransport(socket));
.../ThriftClient/ThriftClient/Something_client.cpp .../ThriftClient/ThriftClient/Something_client.cpp:15:49:{15:68-15:74}:错误:没有匹配的构造函数用于初始化 'apache::thrift::transport::TBufferedTransport' [3]
谁能帮帮我?谢谢!
更新
在 TSocket.h 中包含以下行后一切正常。
#include <sys/socket.h>
#include <arpa/inet.h>
【问题讨论】:
-
您是否在 Google 上搜索过某些错误或类型?搜索“socklen_t”时的第一个条目是该类型所需的实际头文件。
-
感谢您的评论。我发现 TSocket.h 缺少包含。在 mac 上,对于 socklen_t 和 sockaddr,您必须 #include
,对于 sockaddr_in 和 sockaddr_in6,它的 #include 。