使用SWIG

时间:2015-12-22 06:01:37

标签: c++ perl swig

我有一组c ++类,它们使用Boost和STL库,目前正在使用Linux中的那些类生成可执行文件。我想使用SWIG创建一个用于此c ++代码的perl接口。

假设我有10个类1..10,如果我想使用SWIG创建一个带有perl的类1的接口,而main()函数是在类5中

我的界面文件(* .i)应该如何? 我应该以什么格式构建我的C ++代码?

1 个答案:

答案 0 :(得分:1)

您无需包装main()即可为Class1创建接口。如果想在perl中只有那个特定的类,那么你应该写

%module <your_module_name>

%{
#include "class1.h"
%}

%include "class1.h"

SWIG将扫描class1.h并为其遇到的每个类和函数创建相应的包装器。您可以使用%ignore来阻止某些符号被包装。如果Class1的标题中还有其他类型,请说Class2和Class3,类似

class Class1 {
  Class2 foo();
  Class3 bar();
};

SWIG将发出错误,因为它不知道如何包装这些类型。您也需要将它们包装起来,或者如果您不想公开其他类,您可以编写

%import "class2.h"
%import "class3.h"

这将向SWIG告知必要的类型信息,但不会创建包装器。

相关问题