来自开放百科 - 灰狐
跳转到: 导航, 搜索
Wikipedia-35x35.png 您可以在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.



See also