<div class="gmail_quote">On Mon, May 3, 2010 at 3:44 PM, Seth Burleigh <span dir="ltr"><<a href="mailto:seth@tewebs.com">seth@tewebs.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im">> This is not possible because we are no C/C++ interpreter. You need to<br>
> compile and load the compiled files first.<br>
><br>
<br>
</div>I did compile it. I compiled foo.lisp and loaded it.<br>
UTILS2> (defun test ()<br>
<div class="im">  (let ((x (ffi:c-inline (1 2) (:int :int) :int "foo(#0,#1)" :one-liner<br>
t)))<br>
    (print x)))<br>
<br>
TEST<br>
UTILS2> (compile 'test)</div>
"/tmp/ECL0055CnScz.o"<br>
/tmp/ECL0055CnScz.c: In function ‘cl_lispunion* L1test()’:<br>
/tmp/ECL0055CnScz.c:16: error: ‘foo’ was not declared in this scope</blockquote></div><br clear="all">This is a limitation of the compiler and linker. The function "foo" is defined and loaded in memory, but we have not told the compiler about this function and second in some platforms it will be impossible to let the compile code use the "foo" function which is only in memory and not in a library. So the message is that this is not portable at all, but in some platforms it is possible. For instance, this is Mac OS X<div>

<br></div><div><div>>  (defun test () (ffi:clines "extern int foo(int a, int b);")</div><div> (let ((x (ffi:c-inline (1 2) (:int :int) :int "foo(#0,#1)" :one-liner</div><div>t)))</div><div>   (print x)))</div>

<div><br></div><div>TEST</div><div>> (compile 'test)</div><div>[...]</div><div>Undefined symbols:</div><div>  "_foo", referenced from:</div><div>      _L1test in ECL001YyIGUB.o</div><div>ld: symbol(s) not found</div>

<div>collect2: ld returned 1 exit status</div><div>> (setf c:*user-ld-flags* '("-Wl,-undefined,dynamic_lookup"))</div><div><br></div><div>("-Wl,-undefined,dynamic_lookup")</div><div>> (compile 'test)</div>

<div>[...]</div><div>> (test)</div><div><br></div><div>3 </div><div>3</div><div><br></div><div><br></div><div><br>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://tream.dreamhosters.com">http://tream.dreamhosters.com</a><br>


</div></div>