编译包装器时SWIG [C ++ to Lisp(CFFI)]错误

时间:2016-02-17 16:31:38

标签: c++ common-lisp wrapper swig cffi

我是初学者,在C ++和Lisp之间使用SWIG进行接口。我遵循SWIG的文档,但我遇到了问题。 这是我想要接口的简单程序(它可以很容易地在Lisp中完成,但它是要了解如何将C ++代码导入Lisp):

TEST.CPP:

#include "test.hpp"
int test(int x, int y) {
   std::cout << x+y;
   return 0;
}

test.hpp:

#include <iostream>
int test(int x, int y);

为了使用SWIG,我创建了接口文件:

test.i:

%module test
%include <test.hpp>

并且,我执行以下命令行:

$ swig -c++ -cffi test.i 
$ c++ -c test_wrap.cxx

但是在编译test_wrap.cxx时,终端说:

test_wrap.cxx:193:19: error: use of undeclared identifier 'test'
result = (int)test(arg1,arg2);
              ^
1 error generated. 

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

这是一个修改过的test.i,其余的编译:

%module test
%{
#include "test.hpp"
%}

%include <test.hpp>

我跟着this presentation(第24页),显然你需要在生成的包装器中插入include指令。