[mess] [chez] 绑定 C 库

首先编写两个 C 文件

// even.c
int even(n) int n; { return n == 0 || odd(n - 1); }
// odd.c
int odd(n) int n; { return n != 0 && even(n - 1); }

通过 ChezScheme 或命令行在 Mac OS X 上直接编译连接到共享对象库(.so)

$ echo '(system "cc -dynamiclib -o evenodd.so even.c odd.c")' | scheme -q

在 ChezScheme 交互界面中加载并测试

(load-shared-object "./evenodd.so")
(let ([odd (foreign-procedure "odd"
             (integer-32) boolean)]
      [even (foreign-procedure "even"
             (integer-32) boolean)])
  (list (even 100) (odd 100)))
;; => (#t #f)

猜你喜欢

转载自www.cnblogs.com/wander4096/p/9498124.html
今日推荐