|
Boost Users : |
From: raimar wagner (raimar.wagner_at_[hidden])
Date: 2008-01-29 09:40:03
Hi!
I'm using the "thread_safe_signals"-library in a Qt-Context. I have a
file "foo.cpp" containing Qt-stuff which is processed by the moc
before it compiles.
foo.cpp:
> #include "foo.h"
>
> ... Qt-stuff ...
>
foo.h:
> #include "bar.h"
>
> ... Qt-declarations ..
>
bar.h:
> #include <boost/thread_safe_signal.hpp>
> #include <boost/thread_safe_signals/multi_threaded.hpp>
> #include <boost/bind.hpp>
>
> ...
>
Now the following happens:
1.) The Qt moc creates moc_foo.cpp based on foo.cpp
2.) everything compiles fine ("g++ (GCC) 4.1.0 (SUSE Linux)" using
SCons on SUSE 10.1)
3.) The linking process fails with:
> build/release/src/foo.os: In function `boost::signalslib::null_deleter(void const*)':
> /path_to_boost/include/boost/thread_safe_signals/connection.hpp:42: multiple definition of `
> boost::signalslib::null_deleter(void const*)'
> build/release/src/bar.os:/path_to_boost/include/boost/thread_safe_signals/connection.hpp:42: first
> defined here
> build/release/src/foo_moc.os: In function `boost::signalslib::null_deleter(void const*)':
> /path_to_boost/include/boost/thread_safe_signals/connection.hpp:42: multiple definition of
> `boost::signalslib::null_deleter(void const*)'
> build/release/src/bar.os:/path_to_boost/include/boost/thread_safe_signals/connection.hpp:42: first
> defined here
> collect2: ld returned 1 exit status
Our workaround was to edit connection.hpp from:
42: > void null_deleter(const void*) {}
to
42: > void null_deleter(const void*);
and add to bar.cpp:
> namespace boost
> {
> namespace signalslib
> {
> void null_deleter(const void*) {}
> }
> }
This works, but maybe there is a better solution to cope with this
problem. Any ideas?
Kindest regards
Raimar Wagner
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net