Tworzę kod C++ w Eclipse CDT z g++ i otrzymuję następujący błąd konsolidatora:

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

Mam std::function członków w klasie o nazwie GameWindow.

Czy jest coś, do czego muszę się połączyć, aby uzyskać kod za pomocą std::function, aby połączyć poprawnie?

1
anthonyvd 18 październik 2012, 00:09

1 odpowiedź

Najlepsza odpowiedź

Okazuje się, że moja ścieżka lib nie została poprawnie ustawiona dla g++.

Dla potomnych: do kompilacji używam gcc 4.7, ponieważ potrzebuję funkcji C++11. XCode (na OS X Mountain Lion), jest dostarczany z gcc 4.2, więc zainstalowałem gcc 4.7 przez Homebrew.

Aby Eclipse skompilowało się z gcc 4.7, musiałem zmienić ścieżkę do kompilatora i linkera w ustawieniach projektu, aby odpowiadała nowo zainstalowanej przez Homebrew wersji. Jednak nadal miałem starą ścieżkę biblioteki do gcc 4.2 stdlibc++ w ustawieniach mojego projektu.

3
anthonyvd 19 październik 2012, 20:14