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::functionGameWindow というクラスにメンバーがいます。

std::function適切にリンクするために使用するコードを取得するためにリンクする必要があるものはありますか?

4

2 に答える 2

3

lib パスが g++ に対して正しく設定されていないことが判明しました。

後世のために: C++11 の機能が必要なので、コンパイルには gcc 4.7 を使用します。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 に答える