定义一个swig接口文件,用于从某个头文件生成每种类型的包装器

时间:2010-05-05 10:50:50

标签: java swig

我们在Java项目中使用了一些C库。几年前,一些其他几年前退休的开发人员(一如既往)为我们创造了所有包装。包装器是由swig生成的,但是接口文件现在丢失了。

库的基本思想及其包装如下:

  • 只有一个函数返回指向某个复杂对象的指针。并且有该功能的包装。
  • 复杂对象是一个树状结构,有许多节点类型和类型(C结构)用于表示它们。每种类型的每个领域都有数百个包装器,我们正试图全部使用它们。

该库已于一段时间前更新,现在有些新数据我们还没有意识到哪些,但想要使用。这些数据包含在由我们调用的函数创建的对象中间接包含或引用的一些对象中(添加了一些新的字段和类型)。

我知道我不应该手动对包装器进行任何更改,而应该修改界面,但正如我已经写过的那样,它已经丢失了。现在我只想生成几个类型的包装器,这些类型被添加/更改,并且它们是我们的旧包装器,但后来我想开始创建接口文件,它将定义“应该包装的内容和方式”。

我们所需的所有定义都在单个头文件中定义。是否有可能告诉swig为此标头中的每个类型生成包装器?如果是这样,我该如何编写这样的接口文件?

1 个答案:

答案 0 :(得分:2)

来自swig tutorial

  

事实证明,并非总是如此   写一个特殊的接口是必要的   文件。如果您有头文件,那么   通常可以直接包含它   SWIG界面。例如:

 %module example
 %{
 /* Includes the header in the wrapper code */
 #include "header.h"
 %}

 /* Parse the header file to generate wrappers */
 %include "header.h"