(I was ordered to complain by the Cowan)
I have code that calls (with easyffi) a C library function. One
argument is a function. I've defined, with define-external, the
scheme function play. I pass a pointer to play to the C library
function with (location play). This breaks if play is not defined
on the same Scheme source file as the C library function call.
I'll let jcowan speak to the details, as I don't get it.
18:17 < jcowan> You need (location play) because that's the only
way to pass a C pointer to a function (afaik)
18:18 < jcowan> Unfortunately, "location" only works properly if
the compiler knows that its argument is externally defined.
18:18 < jcowan> Otherwise it is converted into a call to
make-locative, which is completely irrelevant to procedures.
18:19 < jcowan> And alas there is no way to tell the compiler
that play is external other than to define it right there.
18:19 < rlpowell> No trick where I could pre-define it in that
file but actually fill it out somewhere else?
18:19 < jcowan> Not afaik.
18:20 < rlpowell> 'k. Thanks.
18:20 < jcowan> Complain to Felix; this is definitely his
domain.
-Robin
--
http://www.digitalkingdom.org/~rlpowell/ *** http://www.lojban.org/
Reason #237 To Learn Lojban: "Homonyms: Their Grate!"
Proud Supporter of the Singularity Institute - http://singinst.org/
_______________________________________________
Chicken-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/chicken-users