我有一组c ++类,它们使用Boost和STL库,目前正在使用Linux中的那些类生成可执行文件。我想使用SWIG创建一个用于此c ++代码的perl接口。
假设我有10个类1..10,如果我想使用SWIG创建一个带有perl的类1的接口,而main()函数是在类5中
我的界面文件(* .i)应该如何? 我应该以什么格式构建我的C ++代码?
答案 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告知必要的类型信息,但不会创建包装器。