<br><br><div class="gmail_quote">On Tue, Jan 3, 2012 at 2:10 PM, Martin Simmons <span dir="ltr"><<a href="mailto:martin@lispworks.com">martin@lispworks.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="HOEnZb"><div class="h5">>>>>> On Thu, 29 Dec 2011 21:19:15 -0500, Mirko Vukovic said:<br>
><br>
> Hello,<br>
><br>
> Several projects (lla, blapack among them) link common lisp (cl) to fortran<br>
> 77 (f77)code.  Unfortunately, being totally unfamiliar with cffi, I was<br>
> having trouble using those packages to learn how to link cl to other f77<br>
> code.<br>
><br>
> To learn more about calling f77 code from CL, I assembled a bunch of simple<br>
> examples (using cygwin+clisp+gfortran).to show how to pass values of<br>
> various types to f77.<br>
><br>
> I have put up the examples on <a href="https://github.com/mirkov/cffi-f77" target="_blank">https://github.com/mirkov/cffi-f77</a>.  I tried<br>
> to add enough documentation to make the package easily understandable.<br>
><br>
> I hope this proves useful to others.  I would appreciate comments regarding<br>
> errors and improvements.<br>
<br>
</div></div>I tested the code in LispWorks on 64-bit Linux and found the following changes<br>
useful.<br>
<br>
Avoid hardwired paths:<br>
<br>
diff --git a/library-ops.lisp b/library-ops.lisp<br>
index 63358e1..2c2e6b9 100755<br>
--- a/library-ops.lisp<br>
+++ b/library-ops.lisp<br>
@@ -27,7 +27,7 @@<br>
 (defun link-lib ()<br>
   "Link to the foreign library"<br>
   (setf *lib*<br>
-       (load-foreign-library #P"/home/977315/my-software-add-ons/my-lisp/cffi+f77/library.dll")))<br>
+       (load-foreign-library (asdf:system-relative-pathname "cffi+f77" "library.dll"))))<br>
<br>
 (defun unlink-lib ()<br>
   "Unlink from the foreign library"<br>
<br>
<br>
Need -fPIC for successful linking on 64-bit Linux:<br>
<br>
diff --git a/makefile b/makefile<br>
index 3db9e80..1b542d6 100755<br>
--- a/makefile<br>
+++ b/makefile<br>
@@ -3,7 +3,7 @@ fortran = gfortran<br>
 objs = simple_example.o subroutines.o<br>
<br>
 %.o : %.f<br>
-       $(fortran) -c $< -o $@<br>
+       $(fortran) -c -fPIC $< -o $@<br>
<br>
 special : clean<br>
 clean :<br>
<br>
<br>
Enhancement to the instructions:<br>
<br>
diff --git a/<a href="http://readme.org" target="_blank">readme.org</a> b/<a href="http://readme.org" target="_blank">readme.org</a><br>
index 9729387..b216a9d 100755<br>
--- a/<a href="http://readme.org" target="_blank">readme.org</a><br>
+++ b/<a href="http://readme.org" target="_blank">readme.org</a><br>
@@ -73,5 +73,6 @@ make library.dll<br>
<br>
   The examples correctness can be verified by running unit tests:<br>
 #+begin_src lisp<br>
+(in-package #:cffi+f77)<br>
 (run-tests)<br>
 #+end_src<br>
<br>
<br>
__Martin<br>
<br>
_______________________________________________<br>
cffi-devel mailing list<br>
<a href="mailto:cffi-devel@common-lisp.net">cffi-devel@common-lisp.net</a><br>
<a href="http://lists.common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel" target="_blank">http://lists.common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel</a><br>
</blockquote></div><br>Cool, thank you.  You removed at least one of my to-do items :-)<br><br>I am currently working on setting it up on 64-bit sbcl on redhat linux.  <br><br>Mirko<br>