SWIG预编译库

时间:2012-01-31 08:35:35

标签: swig

我收到了一组第三方.lib个文件和一个.h文件,我希望使用SWIG进行包装,以便我可以使用其他语言。所有SWIG的例子都是C \ C ++源代码,但在我的情况下我没有源代码 创建包装器应该做些什么?

1 个答案:

答案 0 :(得分:2)

虽然SWIG示例可能包含允许读者编译和尝试它们的定义(源代码),但您会注意到接口文件(.i)的所有示例仅包含声明(您通常在头文件中找到的内容) ,这是SWIG创建包装器所需的全部内容。

编写接口文件的常规方法如下:

/* File : example.i */
%module example
%{
/* This block will end up verbatim in the generated wrapper - include your header
 * so that the wrapper will have access to its definitions 
 */
#include "your_header.h"
%}

/* The definitions in this part are used to generate the wrapper.
 * Copy the definitions you want to export to the other language from the header
 * and put them here 
 */

 extern double variable_from_header;
 extern int    function_from_header(int);

如果您的头文件很简单并且想要在其中导出每个定义,那么您可能会使用如下所示的接口文件:

/* File : example.i */
%module example
%{
#include "your_header.h"
%}

%include "your_header.h"

注意%include指令,该指令指示SWIG解析包含的文件,就好像它是接口定义文件的一部分一样。另请参阅讨论此方法的手册的Section 5.7

获得包装后,将链接与lib链接,就像链接从示例中的源代码创建的对象一样。