C++ 如何编写SWIG接口文件?

C++ 如何编写SWIG接口文件?,c++,swig,C++,Swig,例如,我有test.cpp: #include<iostream> using namespace std; void hello(){ cout<<"Hello World!"<<endl; } 当我编译test_wrap.cxx时,它告诉我hello()不是declare,我将test.I更改为: %module test %{ #include<iostream> void hello(); %} void hello();

例如,我有
test.cpp

#include<iostream>
using namespace std;

void hello(){
    cout<<"Hello World!"<<endl;
}
当我编译test_wrap.cxx时,它告诉我
hello()不是declare
,我将
test.I
更改为:

%module test

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

void hello();
%模块测试
%{
#包括
void hello();
%}
void hello();
它通过了编译,我很困惑,因为我看到一些函数声明没有在
%{
%{
中编写,以及为什么我们需要编写
void hello();
两次?

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

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

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

%inline %{
    void hello();
%}

这两个代码都添加到包装器中,生成了包装器.< /p>,而不是手动在接口文件中声明函数,您可以使用<>代码>包含您的头文件。这对您来说不是吗?“代码>包装器< /代码>和<代码>生成包装器< /代码>?运行SWIG生成包C++的源代码以另一种语言可以调用的格式公开函数的代码中的nction。

%inline %{
    void hello();
%}