SWIG tutorialを実行し、そこに提供されているexample.c、example.iを使用します。私はswig -cffi example.i
でlispファイルを生成しました。CLとSWIG:使用例?
しかし、SBCLでtest.lisp
を実行すると、example.lisp
をコンパイルするときに、定義されていないエイリアン機能についての苦情や苦情が出ます。私はまだ私のexample.cをライブラリにコンパイルしなければならないと確信して、何とかSBCLにロードするよう指示します!しかし、文書はthisを除いて、これにはほとんどいません。
誰かがこれを行う方法を教えてもらえますか、それともC/C++ソースからCFFIバインディングを自動的に生成するためのより良い方法がありますか?
SBCL出力:
...
;
; caught STYLE-WARNING:
; Undefined alien: "fact"
;
; compilation unit finished
; caught 1 STYLE-WARNING condition
;
; caught STYLE-WARNING:
; Undefined alien: "my_mod"
...
test.lisp
;call C functions defined in example.c
(require :cffi)
;;;(require :example "example.lisp")
(load "example.lisp")
(fact 2)
(quit)
美しいです。私のlibexample.soが見つかるようにLD_LIBRARY_PATHを設定しなければなりませんでした。これをあなたの答えに加えたいかもしれません。 –