c++ - 使用/链接静态 C++ 库 config4cpp

标签 c++ static-libraries

我已将 config4cpp 提取到我的项目目录下的 lib/config4cpp 下。我已经在 lib/config4cpp 中运行了 make 文件。

我已经在我的项目 cpp 文件的顶部添加了这个包含

#include "lib/config4cpp/include/config4cpp/Configuration.h"

我的make文件中有这一行

g++ -L./lib -c queue.cpp -lcurl -lconfig4cpp

我收到这个错误

g++    -c -o queue.o queue.cpp
In file included from queue.cpp:4:0:
lib/config4cpp/include/config4cpp/Configuration.h:35:34: fatal error: config4cpp/namespace.h: No such file or directory
 #include <config4cpp/namespace.h>
                                  ^
compilation terminated.
<builtin>: recipe for target 'queue.o' failed
make: *** [queue.o] Error 1

所以它看起来像是找到了 Configuration.h 文件,但是找不到它的其他 header 之一。

我也试过

g++ -I"lib/config4cpp/include/" -c queue.cpp

并将标题包含更改为

#include <config4cpp/Configuration.h>

但是我在找不到 namespace.h 文件的地方遇到了同样的错误

这似乎与从我的 make 文件中运行有关。

output: main.o queue.o
    g++ main.o queue.o -o"bin/behavior"

main.o: main.cpp
    g++ -c main.cpp

message.o: queue.cpp
    g++ -c queue.cpp -L"./lib" -lconfig4cpp -I"./lib/config4cpp/include"

clean:
    rm *.o bin

最佳答案

据我所知,您没有为 g++ 提供 -I 参数,因此会发生以下情况:

您为要使用的 header 提供绝对路径。此 header 现在“位于”您的本地文件夹(您的 .cpp 文件所在的文件夹)内。当它尝试包含“config4cpp/namespace.h”时,它会在当前文件夹中查找。但是您本地没有“config4cpp/namespace.h”文件。

你需要做的是添加:

-I"lib/config4cpp/include/"

作为 g++ 的参数,具有以下文件夹结构:

$BASE_DIR
    |-- config_test.cpp
    |
    |--lib
    |   |-- config4cpp.a
    |   | 
    |   |-- config4cpp 
    |   |           |-- include 
    |   |           |       |-- config4cpp 
    |   |           |       |           |-- Configuration.h 
    |   |           |       |           |-- namespace.h 
    |   |           |       |           |-- ConfigurationException.h 

关于c++ - 使用/链接静态 C++ 库 config4cpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42794120/

相关文章:

c++ - 如何将整数输入为空的vector <int>?

c++ - Win32 从设备上下文创建位图到文件和/或 BLOB

c++ - 如何在 Linux 下构建 Visual Studio Solution?

linux - 如何列出c/c++静态库的依赖?

c++ - Qt - 摆脱 .dll 文件丢失错误

c++ - 获取另一个进程中变量的地址

c++ - FFMPEG 和 OPENGL - 原始帧

C++ - 检测越界访问

ios - 使用 Xcode 中的库(即 ImageMagick、AdMob)包含在项目或链接中?

c - 简单的 C 音频库