我使用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
正确链接代码?
答案 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");}
}