On 20-Jan-09, at 1:32 AM, James Long wrote:
The warning is just a warning. It's a common message from Gambit when dynamically loading libraries. The issue is that when a library is loaded, it references a few functions which don't exist yet. Most likely these requirements will fulfilled by loading other libraries which define those functions. For example:
;;test.scm (c-define (foo) () void "foo" "" (bar))
;;test2.scm (define (bar) (display "hello"))
% gsc test.scm % gsi Gambit v4.3.2
(load "test") *** WARNING -- Variable "bar" used in module "test.o1" is undefined "~/test.o1" (load "test2") "~/test2.scm" (foo) hello>
So it's probably just a timing issue. You could add `(load "test")' at the top of wrapper.scm and compile wrapper.scm, and then run `gsi wrapper.o1' instead.
That's correct. To avoid these warnings you can: 1) Load the files in reverse dependency order (i.e. load test2.scm before test.o1). This can also be done on the command line with: gsi test2 test 2) Use the procedure "load-quietly" which you can define and use like this: (define (load-quietly path) (##load path (lambda (script-line script-path) #f) #t #t #t)) (load-quietly "test") (load-quietly "test2") Marc