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