Boost.signal
-
Ich habe ein Problem mit Boost.signal:
Ich habe ein einfaches Bsp aus dem zugehörigen Boost Tutorial versucht bei mir zum laufen zu bringen.
struct HelloWorld #include <boost/signals.hpp> #include <iostream> { void operator()() const { std::cout << "Hello, World!" << std::endl; } }; int main(){ // Signal with no arguments and a void return value boost::signal<void ()> sig; // Connect a HelloWorld slot HelloWorld hello; sig.connect(hello); // Call all of the slots sig(); }http://www.boost.org/doc/libs/1_36_0/doc/html/signals/tutorial.html#id3469972
Bei dem Versuch das zu builden bekomme ich immer die Fehlermeldung:
undefined reference to `boost::signals::connection::~connection()'
Hat jemand eine idee, was da schief läuft?
Gruß Nic
-
Die includes stehen natürlich über dem struct
-
Hast du auch die Boost.Signal Lib gelinkt? Boost.Signal ist eine von zwölf Bibliotheken in Boost, welche nicht nur aus Headern besteht:
http://www.boost.org/doc/libs/1_38_0/more/getting_started/windows.html#header-only-librariesGrüssli
-
Vielen Dank für die Antwort...
Ich arbeite mit eclipse. Nachdem ich mit bjam die libs gebuildet habe, habe ich diese versucht zu linken:
Das generierte Makefile sah dann so aus:
################################################################################ # Automatically-generated file. Do not edit! ################################################################################ -include ../makefile.init RM := rm -rf # All of the sources participating in the build are defined here -include sources.mk -include subdir.mk -include objects.mk ifneq ($(MAKECMDGOALS),clean) ifneq ($(strip $(C++_DEPS)),) -include $(C++_DEPS) endif ifneq ($(strip $(C_DEPS)),) -include $(C_DEPS) endif ifneq ($(strip $(CC_DEPS)),) -include $(CC_DEPS) endif ifneq ($(strip $(CPP_DEPS)),) -include $(CPP_DEPS) endif ifneq ($(strip $(CXX_DEPS)),) -include $(CXX_DEPS) endif ifneq ($(strip $(C_UPPER_DEPS)),) -include $(C_UPPER_DEPS) endif endif -include ../makefile.defs # Add inputs and outputs from these tool invocations to the build variables # All Target all: SigSlot # Tool invocations SigSlot: $(OBJS) $(USER_OBJS) @echo 'Building target: $@' @echo 'Invoking: GCC C++ Linker' g++ -L/usr/local/boost_1_38_0/bin.v2 -o"SigSlot" $(OBJS) $(USER_OBJS) $(LIBS) @echo 'Finished building target: $@' @echo ' ' # Other Targets clean: -$(RM) $(OBJS)$(C++_DEPS)$(C_DEPS)$(CC_DEPS)$(CPP_DEPS)$(EXECUTABLES)$(CXX_DEPS)$(C_UPPER_DEPS) SigSlot -@echo ' ' .PHONY: all clean dependents .SECONDARY: -include ../makefile.targetsNun bin ich mir nicht sicher, ob ich beim linken einen Fehler gemacht habe, oder etwas anderes falsch gelaufenb ist. Auf jeden Fall bekomme ich die gleiche Fehlermeldung...
Nic
-
Habe das Problem gelöst... Es hat tatsächlich an den Linker-Optionen gehangen. Vielen Dank für die Hilfe!
-
You must link with the boost_signals library (e.g. g++ -oprogram main.cpp -lboost_signals).
Leider spreche ich kein Deutsch.
