SWIG

8-02 734 views

官方教程

接口文件

现在,为了增加这些文件到你喜欢的语言中,你需要写一个接口文件(interface file)投入到swig中。这些C functions的接口文件可能如下所示:

 /* 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();

安装SWIG

sudo apt-get install swig

建立Tcl模块

sudo apt-get install tcl8.4 tcl8.4-dev

在UNIX系统提示,键入以下信息(LINUX系统请见SWIG WIKI共享库页面其他操作系统帮助):

swig -tcl example.i
gcc -fpic -c example.c example_wrap.c -I/usr/include/tcl8.4
gcc -shared example.o example_wrap.o -o example.so

运行tcl终端测试

>> tclsh

 % load ./example.so example
 % puts $My_variable
 3.0
 % fact 5
 120
 % my_mod 7 3
 1
 % get_time
 Sun Feb 11 23:01:07 1996
 % 

建立Python模块

安装Python

sudo apt-get install python2.7 python2.7-dev

转换编码C成Python模块很简单,只需要按如下做即可(请见其他操作系统的SWIG共享库帮助手册):

swig -python example.i
gcc -c -fPIC example.c example_wrap.c -I/usr/include/python2.7
ld -shared example.o example_wrap.o -o _example.so

编写测试脚本

# test.py
import example
print example.fact(5)
print example.my_mod(7,3)
print example.get_time()

运行测试脚本

python test.py

typescript 源码分析

https://www.cnblogs.com/xuld/p/12180913.html

阅读全文

flutter_gen config

const configDefaultYamlContent = ''' name: UNKNOWN flutter_gen: Optional output: lib/gen/ Optional line_length: 80 Optional parse_metadata: false ...

阅读全文

redis 函数的含义

您提供的函数列表是一个 Redis 客户端 API 的部分实现,通常用于与 Redis 数据库进行交互。以下是这些函数的简要解释,按类别进行分类以帮助理解其功能和用...

阅读全文

欢迎留言