<div dir="ltr">On Mon, May 13, 2013 at 12:33 PM, Ala'a Mohammad <span dir="ltr"><<a href="mailto:amalawi@gmail.com" target="_blank">amalawi@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>This is my first try at ECL, and need help in figuring out what is missing. I had tried googling for similar examples but did not found one that demoed what i wanted.</div>

</div></blockquote><div><br></div><div style>There are many examples out there how to call Common Lisp functions. Indeed many in this very same mailing list explain how to call cl_boot(), ecl_read_from_cstring(), cl_funcall() and friends. Directly calling a Common Lisp function compiled by you by name is not recommended.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div>(proclaim '(si::c-export-fname sum-arary))<br>

</div></div></div></blockquote><div><br></div><div style>In order to have compile-time side effects you need to fix the name and use</div><div>(eval-when (:compile-toplevel)</div><div style> (proclaim '(si::c-export-fname sum-array))) </div>

<div style><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>

</div><div>  // summ-array<br></div><div><div>  ////demo_sum_array  = dlsym(libhandle,"demo_sum_array");</div>

<div>  demo_sum_array  = dlsym(libhandle,"L1sum_array");</div><div>  if(demo_sum_array == NULL) {</div><div>    /* ERROR HANDLING */</div><div>    fprintf(stderr, "%s\n", dlerror());</div><div>    exit(1);</div>



<div>  }</div></div></div></blockquote></div><div><br></div><div style>Broken, broken, broken. ECL has to be bootstrapped before calling any function. This involves a well defined protocol that starts by calling cl_boot() with two arguments and, optionally, registering any additional threads from which code may be invoked. Then you can start using Common Lisp functions and objects.</div>

<div style><br></div><div style>Juanjo</div><div style><br></div>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com" target="_blank">http://juanjose.garciaripoll.googlepages.com</a>
</div></div>