【问题标题】:Using Thrift C++ Library in Xcode在 Xcode 中使用 Thrift C++ 库
【发布时间】: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

标签: c++ xcode thrift


【解决方案1】:
#include <thrift/config.h> 

或者只是

#define HAVE_CONFIG_H 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    相关资源
    最近更新 更多