我收到了一组第三方.lib
个文件和一个.h
文件,我希望使用SWIG进行包装,以便我可以使用其他语言。所有SWIG的例子都是C \ C ++源代码,但在我的情况下我没有源代码
创建包装器应该做些什么?
答案 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链接,就像链接从示例中的源代码创建的对象一样。