Pascal Bourguignon a écrit :
"card.lemoine" <st_georges@tele.fr> writes:
Pascal Bourguignon a écrit :
Est-on sur que la libgsl est déjà chargée dans clisp?
Pardon je crois que j'ai compris votre question de travers.
Qu'entendez-vous par "déjà chargée" ?
Les dépendances d'une bibliothèque ne sont pas chargées
automatiquement. Il faut les charger explicitement.
Même en faisant coller les codes de votre démo plus près de ma situation (ci-dessous), cela se déroule comme comme vous le dites. Et pendant près d'un an cela a fonctionné je ne sais comment. Je suis éloigné de mes bases toute cette semaine et le début de l'autre. Je vous remercie beaucoup et vais essayer de comprendre (ou de m'habituer) à ces comportements.
/* mid.c */
#include <stdio.h>
extern int base_fun(int i);
extern int mid_fun (int i) {
int j=base_fun(i);
printf("mid_fun exécute %d -> %d\n",
j, i);
return j>>=1;
}
/* base.c */
#include <stdio.h>
extern int base_fun (int i) {
int j;
printf("base_fun exécute %d -> %d\n", i, j=i<<1);
return j;
}
/* test-c.c */
#include <stdio.h>
extern int mid_fun(int i);
int main(void) {
int i=2;
printf("appel de mid-fun(%d) rend %d\n",i,mid_fun(i));
return (0);
}
;;; test.lisp
;;(format t ";; -- Loading only libmid.so~%")
;;(handler-case (FFI:DEF-CALL-OUT mid-fun (:NAME "mid_fun")
;; (:ARGUMENTS (SIZE FFI:INT :IN))
;; (:RETURN-TYPE FFI:INT)
;; (:LANGUAGE :STDC)
;; (:library "/home/alain/Lisp/pjb/libmid.so"))
;; (error (err) (princ err)))
;; (format t ";; -- Loading libbase.so first.~%")
;; (FFI:DEF-CALL-OUT base-fun (:NAME "base_fun")
;; (:ARGUMENTS (SIZE FFI:INT :IN))
;; (:RETURN-TYPE FFI:INT)
;; (:LANGUAGE :STDC)
;; (:library "/home/alain/Lisp/pjb/libbase.so"))
(format t ";; -- Then loading libmid.so~%")
(FFI:DEF-CALL-OUT mid-fun (:NAME "mid_fun")
(:ARGUMENTS (SIZE FFI:INT :IN))
(:RETURN-TYPE FFI:INT)
(:LANGUAGE :STDC)
(:library "/home/alain/Lisp/pjb/libmid.so"))
(format t ";; -- Now, calling external functions:~%")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (base-fun 42)
(mid-fun 2)
(format t ";; -- Unloading libraries.~%")
(FFI:CLOSE-FOREIGN-LIBRARY "/home/alain/Lisp/pjb/libmid.so")
;; (FFI:CLOSE-FOREIGN-LIBRARY "/home/alain/Lisp/pjb/libbase.so")