Использование библиотеки Thrift C++ в Xcode

Я хочу использовать библиотеку c++ Thrift 0.8.0 в Xcode. Поэтому я настроил бережливость с

./configure --without-java --without-python --without-ruby --without-php --enable-static

Я перетащил статическую библиотеку в свой проект. Затем я установил «Пути поиска заголовков» в «/usr/local/include/thrift» и «/opt/local/include» (потому что я установил boost с помощью macports).

Я могу запустить 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>

person webventil    schedule 26.01.2012    source источник
comment
Вы выполнили поиск в Google для некоторых ошибок или типов? Первой записью при поиске socklen_t был фактический заголовочный файл, который вам нужен для этого типа.   -  person Some programmer dude    schedule 26.01.2012
comment
Спасибо за ваш комментарий. Я нашел отсутствующие включения для TSocket.h . На Mac для socklen_t и sockaddr вы должны #include ‹sys/socket.h›, для sockaddr_in и sockaddr_in6 это #include ‹arpa/inet.h›.   -  person webventil    schedule 26.01.2012


Ответы (1)


#include <thrift/config.h> 

или просто

#define HAVE_CONFIG_H 1
person 汪lvdccyb    schedule 28.05.2020