Eclipse for C ++无法识别自酿的GSL和Boost库

问题描述 投票:1回答:2

我在运行Mac OS X的系统上。我使用Eclipse Oxygen.2 for C / C ++,在我的例子中是C ++。我正在尝试创建一个使用GSL和Boost库的项目。但是,Eclipse似乎无法找到GSL库并且似乎无法识别Boost库,但似乎无法执行Boost库中包含的任何操作。两个库都使用Homebrew安装。这是我正在使用的代码:

#include <iostream>
#include <gsl.h>
#include <boost/optional.hpp>
using namespace std;

int main () {
    int x = 5;
    gsl::owner<int*> p = &x;
    boost::optional<string>;
    return 0;
}

错误如下:

  1. 使用#include <gsl.h>线,它显示fatal error: 'gsl.h' file not found
  2. 线gsl::owner<int*> p = &x;显示Symbol 'owner' could not be resolved
  3. 线boost::optional<string>;显示Type 'boost::optional<string>' could not be resolved。这个很奇怪,因为它似乎与boost/optional.hpp文件没有任何问题。

其他信息可能会有所帮助:

我正在使用MacOS X工具链。我应该切换到Cross GCC工具链吗?

以下是项目首选项> C / C ++ Build> Settings> MacOS X C ++ Linker> Libraries:/usr/local/Cellar/boost/1.66.0/include/usr/local/Cellar/gsl/2.4/include下列出的库搜索路径。

我正在关注Trevor Payne的Let's Learn C ++教程系列。

c++ eclipse macos boost gsl
2个回答
1
投票

看起来你已经在头文件中指出了库而不是包含。

右键单击Project Explorer中的protect。从弹出菜单中选择属性。在属性对话框中导航C / C ++ General-> Paths And Symbols。选择包含选项卡。添加/usr/local/Cellar/boost/1.66.0/include和/usr/local/Cellar/gsl/2.4/include所有配置的C ++语言。

从“库”选项卡中删除包含目录,然后前往“库路径”选项卡以添加库的位置(如果需要)。 Boost通常只是标题。 GSL我不知道Atom。


1
投票

很好地识别正确的问题并提供良好的调试信息。

由于您已经使用Homebrew安装了GSL和Boost,因此它们可能已正确安装,并且编译器无法找到正确的头文件和库文件 - 这可能是因为您在错误的设置中使用了错误的路径。

Linker > Libraries选项中,您使用两个include路径用于Boost和GSL。这些属于不同的路径选项,用于查找标题,而不是库(我不确定它的确切位置,我没有mac!)。请确保您在此处仔细遵循教程说明。

但是,您还需要将库路径放在“库”选项中:例如: /usr/local/Cellar/gsl/2.4/include应该像/usr/local/Cellar/gsl/2.4/lib

© www.soinside.com 2019 - 2024. All rights reserved.