例如,我有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();
?
%{
和%}
之间的代码直接复制到生成的包装器中。包装器需要知道void hello();
是外部的。
%{
和%}
标记之外的代码生成包装代码,因此void hello();
生成函数的包装代码。
为避免重复,您可以使用:
%inline %{
void hello();
%}
这两者都将代码添加到包装器并生成包装器。