使用/ link static c ++库config4cpp

时间:2017-03-14 18:45:18

标签: c++ static-libraries

我已将config4cpp解压缩到lib / config4cpp下的projects目录中。我在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文件,但是找不到其中一个标题。

我也试过

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

1 个答案:

答案 0 :(得分:1)

从我可以看到你没有给g ++的-I参数,所以发生以下情况:

您提供要使用的标头的绝对路径。此标题现在位于&#34;位于&#34;在你的本地文件夹(你的.cpp文件所在的文件夹)里面。当它试图包含&#34; config4cpp / namespace.h&#34;它在当前文件夹中查找。但是你没有&#34; config4cpp / namespace.h&#34;本地文件。

您需要做的是添加:

-I"lib/config4cpp/include/"

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

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