Eclipse:为不工作的c项目添加外部库

Eclipse:为不工作的c项目添加外部库,c,eclipse,library-path,C,Eclipse,Library Path,我已经做了以下工作: 创建新的c项目(带有现有代码的Makefile项目) 添加了生成文件抱怨的生成变量 现在,我的source.c文件抱怨#include files,因为它不知道lib文件夹在哪里,我尝试将lib文件夹添加到库路径(不起作用) 如何将项目链接到外部lib文件夹,以便.c源文件可以读取#include所需的.h文件 我将库路径添加到路径和符号->包含,但当我返回到项目时,它只显示根文件夹,其中没有任何内容。我还必须添加每个.so lib文件吗?回答如下: @cyfur01给出了

我已经做了以下工作:

  • 创建新的c项目(带有现有代码的Makefile项目)
  • 添加了生成文件抱怨的生成变量
  • 现在,我的source.c文件抱怨#include files,因为它不知道lib文件夹在哪里,我尝试将lib文件夹添加到库路径(不起作用)
  • 如何将项目链接到外部lib文件夹,以便.c源文件可以读取#include所需的.h文件

    我将库路径添加到路径和符号->包含,但当我返回到项目时,它只显示根文件夹,其中没有任何内容。我还必须添加每个.so lib文件吗?

    回答如下:

    @cyfur01给出了最好的答案:

    要添加的内容取决于您试图包含的内容。就 Boost中,有许多只包含头的库,还有一些 需要在静态/共享对象库中链接的库 (例如,序列化)。仅标题库

    对于仅标头的库,您只需要包含基本目录 所有头文件的。使用gcc,您可以使用-I命令添加目录 标志(例如,-ic:/path/to/boost_52_0)。使用托管makefile项目 在Eclipse中,您可以使用Properties>C/C++构建来完成同样的任务

    <设置>工具设置> GCC C++编译器>目录静态/共享对象库< /P> 对于静态/共享对象库,必须指定两个选项:

    -l --> The name of the library, less the 'lib' prefix and the file suffix (e.g., libboost_serialization.dll -> boost_serialization
    -L --> The directory to look for the library file in. This is only needed if the library is on a non-standard path.
    
    正如@Chris指出的,对于托管makefile项目,这两个 可以通过属性>C/C++构建>设置>工具设置选项 设置> GCC C++链接器>库< /P>
    好吧,我想起来了:

    (1) 一开始我有一个source.c和一个MAKEFILE (2) 创建新的c项目(带有现有代码的Makefile项目) (3) MAKEFILE抱怨了一个变量,所以我把它添加到了环境变量中 (4) #包含投诉的文件,因此我添加了外部库 (a) 我找到了我的库路径,发现在/lib之前有一个名为include的文件夹 (b) include文件夹有一个头文件列表 (c) 因此,我将路径添加到包含文件夹,而不是路径和符号包含下的lib文件夹


    工作得很有魅力

    您添加了正确的库路径?也许您还需要添加“附加包含路径”之类的内容?你有没有告诉链接器要链接哪些库?你是如何告诉链接器要链接哪些库的?