SWIG是一個軟件開發(fā)工具,連接用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。還幾個解釋和編譯計劃實現(xiàn)(詭計,MzScheme /球拍、雞肉)支持。
SWIG最常用于創(chuàng)建高層解釋或編譯的編程環(huán)境,用戶界面,并作為測試和原型工具C / c++軟件。SWIG通常用于解析C / c++接口并生成所需的粘合代碼的上述目標語言調(diào)用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數(shù)據(jù)類型。
全局函數(shù)、全局變量和常量。
結(jié)構(gòu)和工會。
指針。
數(shù)組和多維數(shù)組。
指向函數(shù)的指針。
可變長度參數(shù)。
類型定義。
枚舉。
ISO C + +
SWIG提供包裝支持ISO C + + 11。
所有c++數(shù)據(jù)類型。
引用。
指向成員的指針。
類。
繼承和多重繼承。
重載的函數(shù)和方法(使用動態(tài)調(diào)度)。
重載操作符。
靜態(tài)成員。
名稱空間(包括使用聲明、別名、嵌套等)。
模板
嵌套類
成員模板
模板特殊化和局部特殊化。
智能指針
c++庫支持字符串和STL。
大多數(shù)新的c++ 11標準特性。
c++用戶依賴于先進的模板編程技術 (如。 模板元編程),也應該意識到SWIG 目前需要手動所有模板類的實例化。 因此,如果您的應用程序包含50000年的實例化 模板類,你的情況可能不同。
預處理
SWIG為一個完整的C預處理器提供了以下功能:
宏擴展。
自動包裝#語句定義為常量(適用時)。
支持C99(可變宏擴展)。
自定義特性
SWIG提供控制的大多數(shù)方面包裝器生成。 大多數(shù) 這些定制選項完全集成到c++類型 系統(tǒng),便于應用定制在繼承 層次結(jié)構(gòu),模板實例化等等。 功能包括:
自定義類型轉(zhuǎn)換/編組。
異常處理。
類/結(jié)構(gòu)擴展。
內(nèi)存管理。
消除歧義。
模板實例化。
文件導入和跨模塊連接。
代碼包含helper函數(shù)支持。
廣泛的診斷(錯誤/警告消息包括細粒警告鎮(zhèn)壓)。
擴展SWIG宏觀處理。
swig 怎么用
swig python 安裝使用教程
假設你有你想要的C函數(shù)添加到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);
}
接口文件
現(xiàn)在,為了將這些文件添加到您最喜愛的語言,你需要寫一個 “接口文件”,這是SWIG的輸入。 一個接口文件 C函數(shù)可能會看起來像這樣:
/* 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維基共享庫 與其他操作系統(tǒng)頁面幫助):
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 應該編譯和鏈接 其余的項目。 在這種情況下,我們已經(jīng)建立了一個動態(tài) 可加載的擴展,可以加載到Tcl解釋器使用 “負載”命令。
swig更新日志
3.0.8 更新:
——增強pdf文檔。
——各種Python 3.5問題修復。
- std::數(shù)組支持添加Ruby和Python。
——要支持Ruby補充道。
——小改進CFFI去,Java、Perl、Python、Ruby。
3.0.7 更新:
添加對Octave-4.0.0的支持。
消除潛在的Android安全利用生成的Java類。
*小的新功能和錯誤修正。
3.0.6 更新:
——穩(wěn)定和回歸修復。
——固定的c++角落案例解析。
——語言為c#的改進和錯誤修正,去,Java,Lua,Python,R。
- PC官方版
- 安卓官方手機版
- IOS官方手機版













Apifox(Api調(diào)試管理工具)2.1.29.1 綠色版
小烏龜代碼管理工具(TortoiseGit)2.13.0.1 中文免費版
SoapUI破解版5.7.0 最新版
小皮面板(phpstudy)8.1.1.3 官方最新版
Ruby3.0(ruby運行環(huán)境)3.0.2 官方版
gcc編譯器( MinGW-w64 9.0.0綠色版)免費下載
寶玉編輯助手0.0.05新版
火花編程軟件2.7.2 官方pc版
猿編程少兒班客戶端3.1.1 官方版
Restorator 2009中文版單文件漢化版
十六進制閱讀小工具
IT碼農(nóng)工具軟件1.0 中文免費版
Postman Canary(網(wǎng)頁調(diào)試軟件)官方版7.32.0綠色免費版
大耳猴少兒編程客戶端1.1.2 官方免費版
excel批量sql語句(通過excel構(gòu)建sql工具)1.0 免費版
軟件添加彈窗和網(wǎng)址工具1.0 中文免費版
天霸編程助手2.1 單文件中文版
ida pro 中文破解版(反編譯工具)7.0 永樂漢化版64位
VBA代碼助手3.3.3.1官方版
JDK 12 linux版for 64位
Samba(完全支持Python 3)4.10 官方最新版
猿編程電腦端3.9.1.347 官方PC版
蒲公英 Android SDKV4.1.11 官方最新版
蒲公英iOS SDK2.8.9.1 官方最新版
WxPython中文可視化編輯器1.2 簡體中文免費版
Python代碼生成器1.0 中文免費版
C語言代碼實例助手1.0 免費版
notepad++7.8.2 中文免費版
wpe pro Alpha 0.9a 中文綠色版




系統(tǒng)自帶的命令行幫助文件(ntcmds.chm)chm格
Excel轉(zhuǎn)換XML工具1.0 免費版
實體類SQL生成工具1.0 綠色免費版
XML字符串解析工具2.0.3 免費版
VC++Spelly(代碼拼寫檢查)3.0.1 官方最新版
易語言vc6迷你連接器【dos命令形式運行】綠
Elastix 20163.0 免費版
sql語法分析器(sql語法分析工具)3.1.0 綠色
dev c++下載(DEV-C++)5.9.2 多語安裝免費版
vc字體設置工具(vc6字體設置工具)1.0 中文綠