|您可以在Wikipedia上了解到此条目的英文信息 SWIG Thanks, Wikipedia.|
SWIG (Simplified Wrapper and Interface Generator) is a free computer software tool used to connect programs written in C/C++ with scripting languages such as Lua, Tcl, Perl, Python, Ruby, Guile, Chicken, PHP and other languages like Java, C#, and Ocaml. The aim is to achieve this connection with minimal effort: a small number of directives are added to the program's header files. Running the SWIG tool creates source code which provides the glue between C/C++ and the target language. Depending on the language, this glue comes in three forms: an executable that embeds the interpreter for the scripting language, a shared library that links into an existing interpreter as some form of extension module, or a shared library that can be linked to other programs compiled in the target language (for example, using JNI).
There are two main purposes of embedding a scripting engine into an existing C/C++ program:
- The program can then be customized much more quickly, using the scripting language rather than C/C++. The scripting engine may even be exposed to the end user, so that they can automate common tasks by writing scripts.
- Even if the final product is not to contain the scripting engine, it may nevertheless be quite useful to write testing scripts.
There are a very wide variety of reasons to create dynamic libraries that can be loaded into existing interpreters, including:
- Provide access to a C/C++ library which has no equivalent in the scripting language.
- Write the whole program in the scripting language, and after profiling, rewrite performance critical code in C or C++.
SWIG is written in C and C++ and has been publicly available since February 1996. The initial author was Dave Beazley, who developed SWIG while working as a graduate student at Los Alamos National Laboratory and the University of Utah. Development is currently supported by an active group of volunteers. SWIG has been released under a BSD type license, meaning it can be used, copied, modified and redistributed freely, for commercial and non-commercial purposes.
- SwigWiki - Wiki containing information about using SWIG.
- Article "Expose Your C/C++ Program's Internal API with a Quick SWIG" by Victor Volkman
- Citations from CiteSeer
- sKWash: the free open source SWIG GUI