【问题标题】:C++ cpp-net lib not found未找到 C++ cpp-net lib
【发布时间】:2015-04-15 08:04:17
【问题描述】:

这是一段来自 cpp-netlib 的示例代码

#include <boost/network/protocol/http/server.hpp>
#include <string>
#include <iostream>

namespace http = boost::network::http;

struct hello_world;
typedef http::server<hello_world> server;

struct hello_world {
    void operator() (server::request const &request,
                     server::response &response) {
        std::string ip = source(request);
        response = server::response::stock_reply(
            server::response::ok, std::string("Hello, ") + ip + "!");
    }
};

int
main(int argc, char * argv[]) {

    if (argc != 3) {
        std::cerr << "Usage: " << argv[0] << " address port" << std::endl;
        return 1;
    }

    try {
        hello_world handler;
        server server_(argv[1], argv[2], handler);
        server_.run();
    }
    catch (std::exception &e) {
        std::cerr << e.what() << std::endl;
        return 1;
    }

    return 0;
}

但在编译 g++ main.cpp -o socke.exe -lboost_system 时出现以下错误

main.cpp:1:50: error: boost/network/protocol/http/server.hpp: No such file or directory
main.cpp:5: error: âboostâ has not been declared

我已经安装了 cpnet-lib 库和 cmake 来构建它们。我无法理解为什么编译器找不到库。

【问题讨论】:

  • 你也安装了 boost 库吗?
  • 是的 boost_1_56_0.7 已安装。
  • 是否在 LIBPATH 中更新了 boost lib 路径?
  • 是的,它是 export PATH=$PATH:/usr/local/include/:/usr/local/lib/ 问题是当我在系统上找到文件时我自己找不到文件
  • 还有另一个名为 LIBPATH 的环境变量,请更新那个。它不是 PATH。

标签: c++ linux boost cpp-netlib


【解决方案1】:

您没有指定 Boost 和 cpp-netlib 标头所在的包含路径。第一个错误行说明缺少哪个标头。假设您的 Boost 头文件安装在 /a/my_boost 下(即有一个带有头文件的 /a/my_boost/boost 子目录)和 /a/my_cpp-netlib 下的 cpp-netlib,您需要为您的编译器添加 -I 命令行选项:

g++ main.cpp -o socke.exe -I/a/my_boost -I/a/my_cpp-netlib -lboost_system

如果您使用的是图形 IDE 或构建系统,项目设置中应该有一个选项来添加包含目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 2018-09-18
    • 2013-07-27
    相关资源
    最近更新 更多