[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-bindings
Subject:    Re: [Kde-bindings] Trouble with current smoke and old 'Hello World'
From:       Ashley Winters <jahqueel () yahoo ! com>
Date:       2008-07-03 8:15:14
Message-ID: 604407.96732.qm () web50804 ! mail ! re2 ! yahoo ! com
[Download RAW message or body]

--- On Wed, 7/2/08, Chris Burel <chrisburel@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? :)

- Ashley Winters


      
_______________________________________________
Kde-bindings mailing list
Kde-bindings@kde.org
https://mail.kde.org/mailman/listinfo/kde-bindings


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic