过去两个小时,我一直在网上研究这个问题,但都没有结果——我已经多次遵循所有的指示。
我使用的是C++11、GCC、Ubuntu 15.04和代码::块13.12。
我正在创建一个自定义静态库。目前,它只包含两个文件:
iochannel.hpp
和
iochannel.cpp
.我编译,一切都很好。一张单曲
libpawlib.a
文件是在中生成的
pawlib/bin/Debug
接下来,在我想要的项目中
使用
静态库,我进入
Project > Build Options...
.I将.a文件的路径添加到
Linker settings
,然后我将.a文件所在的文件夹添加到
Search Directories > Compiler
和
> Linker
我已经检查过,再次检查过,三次检查过,四次检查过路径。
只要我不尝试从库中导入,那个项目的构建就成功了,并且它运行了。然而,无论我如何
#include
语句,当我编译时它会说“没有这样的文件或目录”。我已经(单独)尝试了以下所有方法。。。
#include <iochannel>
#include <iochannel.hpp>
#include <pawlib/iochannel>
#include <pawlib/iochannel.hpp>
#include "iochannel"
#include "iochannel.hpp"
#include "pawlib/iochannel"
#include "pawlib/iochannel.hpp"
据我所知,网上没有比我已经学过的更多的指导了。
这是一件理论上微不足道的事情,但我被难住了。有人能帮我把它弄好吗?
编辑:
我的文件结构如下。在一个文件夹(实际上是这个项目的存储库的根目录)中,我有两个文件夹:
pawlib
和
pawlib-test
。它包含以下重要文件。。。
-
pawlib/bin/Debug/libpawlib.a
-
pawlib/src/iochannel.cpp
-
pawlib/include/iochannel.hpp
中的项目
棘爪试验
正在使用相对路径
../pawlib/bin/Debug/libpawlib.a
或
../pawlib/bin/Debug
,这取决于它需要文件还是目录路径。绝对路径也会失败。我已经确认这些路径上存在文件和文件夹。
重要:
我不必手动包含paulib的.hpp文件,因为这会破坏库的全部功能。我经常使用静态库
从不
必须将.hpp文件或其目录添加到搜索目录中。
gcc命令及其错误(由CodeBlocks生成)如下。。。
-------------- Build: Debug in pawlib-test (compiler: GNU GCC Compiler)---------------
g++ -std=c++11 -std=c++11 -Wall -g -std=c++11 -g -I../pawlib/bin/Debug -c /home/jason/Code/Repositories/pawlib-git/pawlib-test/main.cpp -o obj/Debug/main.o
/home/jason/Code/Repositories/pawlib-git/pawlib-test/main.cpp:2:31: fatal error: pawlib/iostream.hpp: No such file or directory
#include "pawlib/iostream.hpp"
^
compilation terminated.
Process terminated with status 1 (0 minute(s), 0 second(s))
1 error(s), 0 warning(s) (0 minute(s), 0 second(s))
编辑2:
我的错误(部分)…标头通常是从静态库中单独导入的。问题是,几乎没有教程或文档提到这一点。这是“每个人都知道,所以不用说”类型的事情之一。