Python 理解Swig教程示例中的重复
我是学游泳的新手。我很感兴趣的是在一个Ubuntu机器上从Python调用C++。 我刚开始看这里的介绍教程 考虑该页面上的接口文件Python 理解Swig教程示例中的重复,python,swig,Python,Swig,我是学游泳的新手。我很感兴趣的是在一个Ubuntu机器上从Python调用C++。 我刚开始看这里的介绍教程 考虑该页面上的接口文件示例.i如下所示复制 /* example.i */ %module example %{ /* Put header files here or function declarations like below */ extern double My_variable; extern int fact(int n); extern int my_mo
示例.i
如下所示复制
/* example.i */
%module example
%{
/* Put header files here or function declarations like below */
extern double My_variable;
extern int fact(int n);
extern int my_mod(int x, int y);
extern char *get_time();
%}
extern double My_variable;
extern int fact(int n);
extern int my_mod(int x, int y);
extern char *get_time();
为什么文件的后半部分重复了%{%}
之间的内容?如手册所示
%{%}块提供了插入其他代码的位置,
例如C头文件或附加的C声明
生成的C包装器代码
但它并没有解决示例中重复的问题。我遗漏了什么?将
%{
和%}
之间的代码逐字插入生成的SWIG包装中,并用于让包装代码访问列出的标题或声明
这些标记之外的代码指示SWIG为列出的每个声明(或整个头文件)制作包装
如果您遗漏了extern-int-fact(intn)
在第一部分中,包装器在编译并链接到包含该函数的源或库时,将无法访问该函数,因为外部声明将丢失。如果忽略第二部分,将不会生成包装器来从脚本语言访问它
有一条捷径:
%inline %{
...
%}
它指示SWIG同时插入和包装声明。将
%{
和%}
之间的代码逐字插入生成的SWIG包装中,并用于让包装代码访问列出的标题或声明
这些标记之外的代码指示SWIG为列出的每个声明(或整个头文件)制作包装
如果您遗漏了extern-int-fact(intn)
在第一部分中,包装器在编译并链接到包含该函数的源或库时,将无法访问该函数,因为外部声明将丢失。如果忽略第二部分,将不会生成包装器来从脚本语言访问它
有一条捷径:
%inline %{
...
%}
这将指示SWIG同时插入和包装声明