[Kde-bindings] Trouble with current smoke and old 'Hello World' program
Ashley Winters
jahqueel at yahoo.com
Thu Jul 3 08:15:14 UTC 2008
--- 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? :)
- Ashley Winters
More information about the Kde-bindings
mailing list