0

Mac OS X 10.7.3 を実行している MacBook Pro でソースから boost 1.49.0 をコンパイルしました。開発環境として Xcode 4.3.2 と Apple の LLVM 3.1 を使用しています。次のコード行 (boost http server1 の例から) では、説明されているようにリンク エラーが発生します。

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 に対してリンクします。何か不足していますか?ライブラリをブーストするのは初めてです。

4

1 に答える 1

0

私の問題はこのメソッドになかったことがわかりました。クラスの実装に誤って RequestParser.parse() があり、メソッドがクラスの宣言に実装されているブーストの例を確認しました。

于 2012-03-26T03:46:01.933 に答える