是什么导致与 boost c++ 库的以下链接错误?

What causes the following linking error with the boost c++ libraries?

您好,在 cygwin 上使用 gcc 编译器编译我的程序时出现链接错误。第一张图片是 boost 文件系统库教程页面中的一个简单示例程序,我在其中将 filesystem.hpp 包含在 boost 文件夹中。下面是我尝试使用以下命令编译时链接器错误的图片:

g++ -I C:/Users/Ejer/Desktop/c++Dep/boost_1_77_0 -I C:/Users/Ejer/Desktop/c++Dep/eigen-3.4.0 -L C:/Users/Ejer/Desktop/c++Dep/boost_1_77_0/stage/lib test.cpp -o ser

在这里,我尝试使用 eigen 和 boost 库编译我的程序 test.cpp,并设置他们告诉我设置的包含程序路径作为我使用 b2.exe 构建库后的路径。我还链接到 lib 文件以进行提升。我还尝试专门链接到不同的文件系统 lib 文件。提前致谢

#include <iostream>
#include <boost/filesystem.hpp>
using std::cout;
using namespace boost::filesystem;

int main(int argc, char* argv[])
{
  if (argc < 2)
  {
    cout << "Usage: tut3 path\n";
    return 1;
  }

  path p (argv[1]);

  try
  {
    if (exists(p))
    {
      if (is_regular_file(p))
        cout << p << " size is " << file_size(p) << '\n';

      else if (is_directory(p))
      {
        cout << p << " is a directory containing:\n";

        for (directory_entry& x : directory_iterator(p))
          cout << "    " << x.path() << '\n';
      }
      else
        cout << p << " exists, but is not a regular file or directory\n";
    }
    else
      cout << p << " does not exist\n";
  }

  catch (const filesystem_error& ex)
  {
    cout << ex.what() << '\n';
  }

  return 0;
}

I get a linking error when compiling my program

不,你不知道。您在 linking 程序时遇到 linking 错误,而不是在编译程序时。

原因:您没有提供库(-L C:/Users/.... 告诉 link 人员去哪里搜索库;而不是 link 要搜索哪些库)。您的命令行应类似于:

g++ -I ... -L ... test1.cpp -o ser -lboost_filesystem