如何编写SWIG接口文件?

时间:2017-12-16 14:46:33

标签: c++ swig

例如,我有test.cpp

#include<iostream>
using namespace std;

void hello(){
    cout<<"Hello World!"<<endl;
}

我写test.i

%module test

%{
#include<iostream>
%}

void hello();

当我编译test_wrap.cxx时,它告诉我hello() is not declare,并将test.i更改为:

%module test

%{
#include<iostream>
void hello();
%}

void hello();

它通过编译,我很困惑,因为我看到%{ %{中没有写demos函数声明,为什么我们需要写 void hello();两次?

1 个答案:

答案 0 :(得分:2)

python3 program.py %{之间的代码将直接复制到生成的包装器中。包装器需要知道%}是外部的。

void hello();%{标记之外的代码会生成包装代码,因此%}会为该函数生成包装代码。

为避免重复,您可以使用:

void hello();

这两者都将代码添加到包装器并生成包装器。