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