未定义的符号std :: __ throw_bad_function_call

时间:2012-10-17 20:09:19

标签: 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正确链接代码?

2 个答案:

答案 0 :(得分:3)

原来我的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 ++的旧库路径。

答案 1 :(得分:1)

如果这是您唯一的错误,为什么不尝试在自己的代码中实现该功能?类似的东西:

namespace std {
    void __throw_bad_function_call() {throw bad_function_call("invalid function called");}
}