On Sun, Feb 28, 2010 at 1:20 AM, Tobias Rautenkranz <span dir="ltr"><<a href="mailto:tobias@rautenkranz.ch">tobias@rautenkranz.ch</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">> Actually, I think it is still a pathing issue. It seems that setting<br>
> cffi:*foreign-library-directory* is not sufficient, but when I copy the<br>
> dylib files to the current directory it seems to work ok.<br>
</div>I have no idea what's wrong.<br>
<div class="im"><br>
> At any rate, on to the next error. This one's in cl-smoke.qt.core:<br>
</div><div class="im">> "file /Users/elliott/Programming/Lisp/asdf/qt.core/src/event.lisp"<br>
</div><div class="im">> ; Symbol "TYPE" not found in the CXX package.<br>
</div>cl-smoke should have constructed the generic function cxx:type at this point.<br>
(a ffi problem?)<br>
<br>
You can see if cl-smoke found the QEvent::type() function, by invoking the<br>
ABORT restart when the error occurs. Since the qtcore module is already loaded<br>
at this point, you can list the methods with:<br>
(smoke::fgrep-methods cl-smoke.qt.core::*smoke-module* "type")<br>
which should give you a list of methods containing the word "type". e.g.:<br>
public QEvent::Type QEvent::type() const<br>
[...]<br></blockquote><div><br></div><div>I seem to be getting nil...</div><div><br></div><div>0] abort</div><div><div>; </div><div>; compilation unit aborted</div><div>; caught 2 fatal ERROR conditions</div><div>; caught 4 STYLE-WARNING conditions</div>
<div>; printed 130 notes</div></div><div><div>* (smoke::fgrep-methods cl-smoke.qt.core::*smoke-module* "type")</div><div><br></div><div>NIL</div><div><br></div></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
You can also try tracing the generic-function construction of cl-smoke:<br>
(require :cl-smoke.smoke)<br>
(trace smoke::ensure-generic-methods)<br>
(require :cl-smoke.qt.core)<br>
0: (SMOKE::ENSURE-GENERIC-METHODS<br>
((CXX::WRITE-CURRENT-TOKEN . "writeCurrentToken")<br>
(CXX::WRITE-START-ELEMENT . "writeStartElement")<br>
(CXX::WRITE-START-DOCUMENT . "writeStartDocument")<br>
[...]<br>
(CXX::TYPE . "type")<br>
[...]<br>
(CXX::QT-METACALL . "qt_metacall") (CXX::TR-UTF8 . "trUtf8")<br>
(CXX::QT-METACAST . "qt_metacast") (CXX::META-OBJECT . "metaObject")<br>
(CXX::|| . "")))<br>
0: SMOKE::ENSURE-GENERIC-METHODS returned NIL<br></blockquote><div><br></div><div>On the second require it tries to compile event.lisp again and fails to do so.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
I doubt that the problem is there, but can you check that smoke picked up the<br>
QEvent::type() method by using the kdebindings smokeapi tool:<br>
kdebindings-build/smoke/smokeapi$ ./smokeapi -m type QEvent<br>
QEvent::Type QEvent::type() const</blockquote></div><div><br></div><div><div>$ ./smokeapi -m type QEvent</div><div>Error: class 'QEvent' not found</div><div>Abort trap</div></div><div><br></div><div>Thanks (for the nth time) for your help.</div>
<br>-- <br>Elliott Slaughter<br><br>"Don't worry about what anybody else is going to do. The best way to predict the future is to invent it." - Alan Kay<br>