如何编写SWIG接口文件?

问题描述 投票:2回答:1

例如,我有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();

c++ swig
1个回答
2
投票

%{%}之间的代码直接复制到生成的包装器中。包装器需要知道void hello();是外部的。

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

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

%inline %{
    void hello();
%}

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

© www.soinside.com 2019 - 2024. All rights reserved.