【问题标题】:Header file not found (boost/bind.hpp)找不到头文件 (boost/bind.hpp)
【发布时间】:2014-09-25 01:35:39
【问题描述】:

我正在使用 boost 开发一个项目,但 preproc 出于某种神秘原因找不到 boost 头文件。

我使用的是 xUbuntu 32 位,我使用 g++boost 1.55.0


错误: main.cpp:1:26: fatal error: boost/bind.hpp: No such file or directory

如果我评论这个包含,它是下一个未找到的包含,所以问题不在于一个文件。


代码:

#include "boost/bind.hpp" // just to be sure I test with "" and <>
#include <boost/asio.hpp>
#include <sys/types.h>


ma​​kefile:

NAME            = myProject

INSTALL_DIR     = /usr/local/bin

FILES_DIR       = /etc/myProject

RC_FILE         = ./scripts/myproject.rc

SRC             = main.cpp

OBJ             = $(SRC:.cpp=.o)

CC              = g++

IFLAGS          = -I./boost/

LFLAGS          = -pthread -L./boost/stage/lib/ -lboost_system-mt -lboost_regex-mt -lboost_filesystem-mt

RM              = rm -f

all     :  $(OBJ)
           $(CC) -o $(NAME) $(OBJ) $(IFLAGS) $(LFLAGS)

install :
          mkdir -p $(INSTALL_DIR)
          mkdir -p $(FILES_DIR)
          cp $(NAME) $(INSTALL_DIR)
          cp $(RC_FILE) /etc/init.d/
          insserv $(RC_FILE)

remove  :
          insserv --remove $(RC_FILE)

clean   :
          find . -name "*~" -exec rm {} \;
          find . -name "*.o" -exec rm {} \;

fclean  : clean
          $(RM) $(NAME)

re      : clean all

.PHONY  : install remove clean fclean


ma​​in.cpp 和 makefile 位于 whatever/myproject/

boost库在whatever/myproject/boost/

boost 库(.a 和 .so)位于 whatever/myproject/boost/stage/lib/

boost 标头位于 whatever/myproject/boost/boost/


我已经搜索了大约2个小时,尝试了我能想到的一切都没有成功,所以在此非常感谢可以解决这个问题的人。


编辑:

Bidule0hm make -n
g++ -c -o main.o main.cpp
g++ -o myProject main.o -I./boost/ -pthread -L./boost/stage/lib/ -lboost_system-mt -lboost_regex-mt -lboost_filesystem-mt

【问题讨论】:

  • 如果您给出实际错误、真正的 makefile 详细信息以及源文件和 boost 标头的实际位置,这将更容易回答。
  • @AlanStokes 我已经添加了所有细节;)

标签: c++ include header-files


【解决方案1】:

我终于解决了这个问题,通过 apt-get 安装 boost 而不是在项目文件夹中本地使用它。

其他对我有帮助的答案here

【讨论】:

    【解决方案2】:

    您可以运行 make -n 或 make V=1 并发布输出吗?

    第二次发帖:

    我认为包含文件夹必须在 g++ 上的 -o 之前。可以换成 $(CC) -o $(NAME) $(OBJ) $(IFLAGS) $(LFLAGS)

    with $(CC) -c $(IFLAGS) -o $(NAME) $(OBJ) $(LFLAGS)

    我的项目中的示例行如下所示:

    g++ -c -g -I.. -I/usr/include/boost -std=c++11 "build/Debug/main.od" -o build/Debug/main.o main.cpp

    第一次发帖:

    为了笑,试试 -I/full/path/to/boost。

    通常有这些问题,它更多的是“。”的情况。不是您认为的目录。

    还请发布您使用的平台(windows、Linux)和 makefile :)

    【讨论】:

    • 我刚刚尝试过绝对路径,它也不起作用。我已添加要求的详细信息。
    • 之前的包含不能使用,抱歉。这个 makefile 是从另一个项目(但在 C 中)复制和修改的,它就像一个魅力,所以我不明白为什么它在这里不起作用。
    • 我用make -n的结果编辑了,make V=1输出和make一样的错误
    猜你喜欢
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 2022-10-23
    • 2012-08-27
    相关资源
    最近更新 更多