SWIG是一个软件开发工具,连接用C和c++编写的程序和各种高级程序设计语言。SWIG是使用不同类型的目标语言包括常见脚本语言如Javascript、Perl、PHP、Python、Tcl和Ruby。支持的语言列表还包括non-scripting c#等语言,Common Lisp(CLISP,快板CL,CFFI UFFI),D,语言,Java,Lua,Modula-3,OCAML和八度,R和Scilab。还几个解释和编译计划实现(诡计,MzScheme /球拍、鸡肉)支持。
SWIG最常用于创建高层解释或编译的编程环境,用户界面,并作为测试和原型工具C / c++软件。SWIG通常用于解析C / c++接口并生成所需的粘合代码的上述目标语言调用C / c++代码。SWIG还可以导出的解析树的XML和Lisp s-expressions形式。
swig功能特性
代码生成
SWIG目前支持20三个不同的目标语言生成包装器代码:
Allegro CL
C#
CFFI
CLISP
Chicken
D
Go
Guile
Java
Javascript
Lua
Modula-3
Mzscheme
OCAML
Octave
Perl
PHP
Python
R
Ruby
Scilab
Tcl
UFFI
此外,可以导出为XML解析树和Lisp s-expressions。 实验工作也可用于派克模块。
ISO C
SWIG包装所有ISO C99的能力。 功能包括:
的处理 所有 ISO C数据类型。
全局函数、全局变量和常量。
结构和工会。
指针。
数组和多维数组。
指向函数的指针。
可变长度参数。
类型定义。
枚举。
ISO C + +
SWIG提供包装支持ISO C + + 11。
所有c++数据类型。
引用。
指向成员的指针。
类。
继承和多重继承。
重载的函数和方法(使用动态调度)。
重载操作符。
静态成员。
名称空间(包括使用声明、别名、嵌套等)。
模板
嵌套类
成员模板
模板特殊化和局部特殊化。
智能指针
c++库支持字符串和STL。
大多数新的c++ 11标准特性。
c++用户依赖于先进的模板编程技术 (如。 模板元编程),也应该意识到SWIG 目前需要手动所有模板类的实例化。 因此,如果您的应用程序包含50000年的实例化 模板类,你的情况可能不同。
预处理
SWIG为一个完整的C预处理器提供了以下功能:
宏扩展。
自动包装#语句定义为常量(适用时)。
支持C99(可变宏扩展)。
自定义特性
SWIG提供控制的大多数方面包装器生成。 大多数 这些定制选项完全集成到c++类型 系统,便于应用定制在继承 层次结构,模板实例化等等。 功能包括:
自定义类型转换/编组。
异常处理。
类/结构扩展。
内存管理。
消除歧义。
模板实例化。
文件导入和跨模块连接。
代码包含helper函数支持。
广泛的诊断(错误/警告消息包括细粒警告镇压)。
扩展SWIG宏观处理。
swig 怎么用
swig python 安装使用教程
假设你有你想要的C函数添加到Tcl、Perl、Python、Java和c#。 具体来说,假设你有一个文件“example.c”
/* File : example.c */
#include <time.h>
double My_variable = 3.0;
int fact(int n) {
if (n <= 1) return 1;
else return n*fact(n-1);
}
int my_mod(int x, int y) {
return (x%y);
}
char *get_time()
{
time_t ltime;
time(<ime);
return ctime(<ime);
}
接口文件
现在,为了将这些文件添加到您最喜爱的语言,你需要写一个 “接口文件”,这是SWIG的输入。 一个接口文件 C函数可能会看起来像这样:
/* 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();
建立一个Tcl模块
在UNIX提示,键入以下(显示为Linux,看到 SWIG维基共享库 与其他操作系统页面帮助):
unix % swig -tcl example.i
unix % gcc -fpic -c example.c example_wrap.c \
-I/usr/local/include
unix % gcc -shared example.o example_wrap.o -o example.so
unix % 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
%
SWIG 命令生成一个文件 example_wrap.c 应该编译和链接 其余的项目。 在这种情况下,我们已经建立了一个动态 可加载的扩展,可以加载到Tcl解释器使用 “负载”命令。
swig更新日志
3.0.8 更新:
——增强pdf文档。
——各种Python 3.5问题修复。
- std::数组支持添加Ruby和Python。
——要支持Ruby补充道。
——小改进CFFI去,Java、Perl、Python、Ruby。
3.0.7 更新:
添加对Octave-4.0.0的支持。
消除潜在的Android安全利用生成的Java类。
*小的新功能和错误修正。
3.0.6 更新:
——稳定和回归修复。
——固定的c++角落案例解析。
——语言为c#的改进和错误修正,去,Java,Lua,Python,R。
- PC官方版
- 安卓官方手机版
- IOS官方手机版













Apifox(Api调试管理工具)2.1.29.1 绿色版
小乌龟代码管理工具(TortoiseGit)2.13.0.1 中文免费版
SoapUI破解版5.7.0 最新版
小皮面板(phpstudy)8.1.1.3 官方最新版
Ruby3.0(ruby运行环境)3.0.2 官方版
gcc编译器( MinGW-w64 9.0.0绿色版)免费下载
宝玉编辑助手0.0.05新版
火花编程软件2.7.2 官方pc版
猿编程少儿班客户端3.1.1 官方版
Restorator 2009中文版单文件汉化版
十六进制阅读小工具
IT码农工具软件1.0 中文免费版
python爬虫实战入门教程pdf免费版
Postman Canary(网页调试软件)官方版7.32.0绿色免费版
大耳猴少儿编程客户端1.1.2 官方免费版
excel批量sql语句(通过excel构建sql工具)1.0 免费版
软件添加弹窗和网址工具1.0 中文免费版
天霸编程助手2.1 单文件中文版
ida pro 中文破解版(反编译工具)7.0 永乐汉化版64位
VBA代码助手3.3.3.1官方版
Node.js开发实战教程百度云完整版【36课】
猿编程电脑端3.9.1.347 官方PC版
蒲公英 Android SDKV4.1.11 官方最新版
蒲公英iOS SDK2.8.9.1 官方最新版
WxPython中文可视化编辑器1.2 简体中文免费版
Python代码生成器1.0 中文免费版
C语言代码实例助手1.0 免费版
c primer plus第6版中文版高清版
C++ Primer Plus 2021电子版最新版
notepad++7.8.2 中文免费版
wpe pro Alpha 0.9a 中文绿色版




Microsoft Spy++9.10 中文绿色版
源代码保护工具(Dotfuscator Professional
MDB数据库管理软件1.0 中文免费版
源码安全监测工具(Fortify SCA 2016)【附cr
RTX ServerSDK 2015官方最新版
阿猫串口调试助手2.4.0.0绿色免费版
精易论坛SQL语句生成器2.1 绿色最新版 【
java开源报表系统(JasperReports Library)6
独立团游戏作坊窗口分析工具【VIP全套教程及