c++ - undefined symbol std::__throw_bad_function_call

标签 c++ stl linker g++

我正在使用 g++ 在 Eclipse CDT 中构建 C++ 代码,但出现以下链接器错误:

Undefined symbols for architecture x86_64:
  "std::__throw_bad_function_call()", referenced from:
      std::function<void (graphics::RenderingContext*)>::operator()(graphics::RenderingContext*) const in GameWindow.o

我在名为 GameWindow 的类中有 std::function 成员。

为了使用 std::function 正确链接,我必须链接到什么东西吗?

最佳答案

原来我的 lib 路径没有为 g++ 正确设置。

为了后代:我使用 gcc 4.7 进行编译,因为我需要 C++11 特性。 XCode(在 OS X Mountain Lion 上)附带 gcc 4.2,所以我通过 Homebrew 安装了 gcc 4.7。

为了使用 gcc 4.7 编译 Eclipse,我必须在项目设置中更改编译器和链接器的路径,以对应新安装的 Homebrew 版本。但是,我的项目设置中仍然有指向 gcc 4.2 stdlibc++ 的旧库路径。

关于c++ - undefined symbol std::__throw_bad_function_call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12942538/

相关文章:

c++ - 如何在 C++ 中将模板类声明为友元

c++ - 为什么这不是纯虚函数的调用?

c++ - 绑定(bind)对象未在 VS2015 上编译

c++ - 在具有不兼容代码的 C++ 代码中使用 C 库

c++ - 在 STL make_heap c++​​ 中将函数指针作为比较器传递

c++ - 如何反转 C++ vector ?

command-line - 如何使用 $ORIGIN 获取 RPATH 以在 Code::Blocks GCC 上工作?

c - C程序中对 'printf'的 undefined reference

c++ - 为什么当我尝试使用带有参数的 priority_queue 作为指向结构的指针时会弹出错误

c++ - 获取导致 g++ 中链接器错误的文件