[Kde-bindings] Trouble with current smoke and old 'Hello World' program
Richard Dale
rdale at foton.es
Thu Jul 3 11:28:24 UTC 2008
On Thursday 03 July 2008 09:15:14 Ashley Winters wrote:
> --- On Wed, 7/2/08, Chris Burel <chrisburel at gmail.com> wrote:
> > Now it compiles, but fails to link properly:
> > >g++ -g -I$QTDIR/include
> >
> > -I/home/chris/src/kdebindings/smoke -o hellosmoke2
> > hellosmoke2.c -lqt-mt
> > /tmp/ccQyDQ6w.o: In function `Smoke::findClass(char
> > const*)':
> > /home/chris/src/kdebindings/smoke/smoke.h:376: undefined
> > reference to
> > `Smoke::classMap'
>
> The use of a static Smoke::classMap does an unfortunate job of prohibiting
> use of libsmokeqt.so.2 via dlopen(). I've been bouncing ideas around in my
> head, and the best I could arrive at was an untested patch changing
> classMap to an instance variable, like so:
>
> --- a/smoke/smoke.h
> +++ b/smoke/smoke.h
> @@ -61,9 +61,10 @@ class SmokeBinding;
> class SMOKE_EXPORT Smoke {
> private:
> const char *module_name;
> + std::map<std::string, Smoke*>& classMap;
>
> public:
> - static SMOKE_EXPORT std::map<std::string, Smoke*> classMap;
> + static SMOKE_EXPORT std::map<std::string, Smoke*> class_map;
>
> union StackItem; // defined below
> /**
> @@ -289,6 +290,7 @@ public:
> argumentList(_argumentList),.
> ambiguousMethodList(_ambiguousMethodList),
> castFn(_castFn),
> + classMap(class_map),
>
> binding(0)
> {
>
> ... along with a corresponding change to kalyptus. Opinions? Arno? :)
Arno split up QtRuby and Qyoto into a shared library, and the dll loadable
extension part. I think the classMap is only referenced from the shared lib
and that might explain why it works.
Nice to see you looking at the current smoke stuff anyway - it would be
interesting to hear about what you think of how Arno split it up into
modules.
-- Richard
More information about the Kde-bindings
mailing list