1

我正在使用 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

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

有什么我必须链接到的东西才能获得std::function用于正确链接的代码吗?

4

2 回答 2

3

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

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

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

于 2012-10-17T20:42:47.867 回答
2

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

namespace std {
    void __throw_bad_function_call() {throw bad_function_call("invalid function called");}
}
于 2012-10-17T20:45:20.010 回答