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();
%}