--
Edgar Gonçalves
 Instituto Superior Técnico,
 INESC-ID - Software Engineering Group,
 Portugal


On 2/13/07, Luís Oliveira <[EMAIL PROTECTED]> wrote:
On 13/02/07, Edgar Gonçalves <[EMAIL PROTECTED]> wrote:
> ,-----
> | (asdf:operate 'asdf:load-op :cffi)
> |
> | (cffi:define-foreign-library odbc
> |   (:windows (:or "odbc32.dll"))
> |   (t (:default "odbc32.dll")))
> |
> | (cffi:defcfun ("SQLAllocHandle" sql-handle) :short)
> |
> | (sql-handle)
> `-----

OK, yes, you need to load the library before the defcfun. Some lisps
won't mind but others do. They'll all complain by the time the call to
sql-handle is evaluated though.

Why aren't you loading the library? What are you trying to accomplish?
What am I missing?

I was trying to explain my first problem, but if it's assumed that
"some lisps won't mind" while others do, I guess the problem rolls
back to us, developers, to do the use-foreign-library.

About my second issue, I've come to the conclusion that this simple
example (below) works all-right, given that you call
use-foreign-library after loading the image (before calling the
foreign functions). This is what I find most annoying, since I have to
scoop through all 3rd party libraries for used dll's. Any chance to
make this work for clisp just like it does for (e.g.) ACL (i.e.,
without having to call use-foreign-library)?

,-----
| (asdf:operate 'asdf:load-op :cffi)
|
| (cffi:define-foreign-library odbc
|   (:windows (:or "odbc32.dll"))
|   (t (:default "odbc32.dll")))
|
| (cffi::use-foreign-library odbc)
|
| (cffi:defcfun ("SQLAllocHandle" sql-handle) :short)
|
| (format t "---------------Before loading image, dll call yelds:
~A!~%" (sql-handle))
|
| (ext:saveinitmem "test.exe"
|                :init-function #'(lambda ()
|                                   (cffi::use-foreign-library odbc)
|                                   (format t "---------------After loading 
image, dll call
yelds: ~A!~%" (sql-handle))
|                                   (ext:quit)
|                                   )
|                :NORC t
|                :script t
|                :executable t
|                :quiet t)
| (ext:quit)
`-----

I'll try again making it work with my clsql project, and I'll post
back my success.
_______________________________________________
cffi-devel mailing list
cffi-devel@common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel

Reply via email to