2012-03-25 7 views
0

Я скомпилировал boost 1.49.0 из источника на MacBook Pro под управлением Mac OS X 10.7.3, я использую Xcode 4.3.2 и LLVM 3.1 от Apple в качестве среды разработки. Следующая строка коды (от подталкивания HTTP примера server1) приводит к связующей ошибке, как описано:Boost tuple, ошибка компоновщика в Mac OS X 10.7

void Connection::handleRead(const boost::system::error_code& error, size_t bytesTransfered) { 
    if (!error) { 
     boost::tribool result; 
     boost::tie(result, boost::tuples::ignore) = requestParser.parse(request, buffer.data(), buffer.data() + bytesTransfered); 

     if (result) { 
      requestHandler.handleRequest(request, reply); 
      async_write(socket, reply.toBuffers(), boost::bind(&Connection::handleWrite, shared_from_this(), placeholders::error)); 
     } 
     else if (!result) { 
      reply = Reply::stockReply(Reply::badRequest); 
      async_write(socket, reply.toBuffers(), boost::bind(&Connection::handleWrite, shared_from_this(), placeholders::error)); 
     } 
     else { 
      socket.async_read_some(boost::asio::buffer(buffer), boost::bind(&Connection::handleRead, shared_from_this(), placeholders::error, placeholders::bytes_transferred)); 
     } 
    } 
    else if (error != error::operation_aborted) { 
     connectionManager.stop(shared_from_this()); 
    } 
} 

Undefined symbols for architecture x86_64: 
    "boost::tuples::tuple<boost::logic::tribool, char*, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> RequestParser::parse<char*>(Request&, char*, char*)", referenced from: 
     Connection::handleRead(boost::system::error_code const&, unsigned long) in Connection.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Я искал ответы, но я не мог найти что-нибудь связанное с ней, и не понимаю, почему эта ошибка происходит , Проект связан с lboost_system. Я что-то упускаю? Я новичок в создании библиотек.

ответ

0

Оказывается, моя проблема не была в этом методе, я ошибочно использовал RequestParser.parse() в реализации класса, вернувшись с примером boost, метод реализован в объявлении класса.

Смежные вопросы