精华内容
参与话题
问答
  • SWIG

    千次阅读 2018-07-12 19:04:40
    SWIG是个帮助使用C或者C++编写的软件能与其它各种高级编程语言进行嵌入联接的开发工具。SWIG能应用于各种不同类型的语言包括常用脚本编译语言例如Perl, PHP, Python, Tcl, Ruby and PHP。支持语言列表中也包括非脚本...
    SWIG是个帮助使用C或者C++编写的软件能与其它各种高级编程语言进行嵌入联接的开发工具。SWIG能应用于各种不同类型的语言包括常用脚本编译语言例如Perl, PHP, Python, Tcl, Ruby and PHP。支持语言列表中也包括非脚本编译语言,例如C#, Common Lisp (CLISP, Allegro CL, CFFI, UFFI), Java, Modula-3, OCAML以及R,甚至是编译器或者汇编的计划应用(Guile, MzScheme, Chicken)。SWIG普遍应用于创建高级语言解析或汇编程序环境,用户接口,作为一种用来测试C/C++或进行原型设计的工具。SWIG还能够导出XML或Lisp s-expressions格式的解析树。SWIG可以被自由使用,发布,修改用于商业或非商业中。
    展开全文
  • swig

    2014-06-16 18:09:00
    http://blog.csdn.net/zhanhuai1/article/details/7236262 转载于:https://www.cnblogs.com/gsblog/p/3791433.html

    http://blog.csdn.net/zhanhuai1/article/details/7236262

    转载于:https://www.cnblogs.com/gsblog/p/3791433.html

    展开全文
  • <div><p>i have reinstall swig 2.0 debian but not work.... help i. i install on Kali linux 2.0, GNU 3.7.11 and gcc version 7.2.0 (Debian 7.2.0-19) [64%] Generating doxygen xml for grgsm_swig_doc docs...
  • SWIG version dependency

    2020-11-27 16:29:34
    It turns out that when I installed SWIG from apt, it installed SWIG and SWIG 3.0. I was able to resolve my problem by installing SWIG 2.0. <p>If you are having this error, I suggest running: apt-get ...
  • Swig templates broken

    2020-11-29 18:39:02
    at new swig (/usr/local/lib/node_modules/geddy/lib/template/adapters/swig.js:25:15) at /usr/local/lib/node_modules/geddy/lib/template/adapters/index.js:42:14 at setOptions (/usr/local/lib/node_modules...
  • <div><p>Trying to rebuild mypaint 4 on Arch Linux after a system update to swig 4, the resulting mypaint package does not run, with the following traceback: <pre><code> $ mypaint INFO: mypaint: ...
  • <div><p>Does anyone know what the minimum version of swig is that we support? I just logged onto a cluster with a really old version in /usr/bin (1.3.40), and got some garbage. <pre><code> $ make ...
  • With this change and #4944 we no longer have any dependencies on SWIG, so this also deletes the SWIG and swigmake externals. <p>This also: <ul><li>changes the python binding build process, so there ...
  • SWIG missing...

    2020-12-02 05:22:14
    -- Could NOT find SWIG (missing: SWIG_EXECUTABLE SWIG_DIR) (Required is at least version "3.0.12") CMake Warning at CMakeLists.txt:85 (message): SWIG not found, interfaces and projects that ...
  • Python bindings with Swig

    2020-11-29 01:05:20
    ve cleaned up and updated my swig branch to use the current master of Drake. I've also brought in the work I did in ...
  • error message: swig FAILED

    2020-12-01 17:46:51
    Task :swig FAILED Unable to open file build/generated-src/cpp/kaldi_recognizer_wrap.cc: No such file or directory FAILURE: Build failed with an exception. * What went wrong: Execution failed for ...
  • 构建Go SWIG示例代码

    2013-06-10 14:14:28
    <p>I'm trying to build the example SWIG bindings that come with Go. The files I'm looking at are located in misc/swig/callback. <p>Are there instructions on how to build this example? I tried ...
  • Add swig/4.0.1

    2020-12-02 11:08:18
    <div><p>Specify library name and version: <strong>swig/4.0.1</strong></p> <p>Ported from Bincrafters' recipe: https://github.com/bincrafters/conan-swig_installer</p> <p>-yseop Fixes bincrafters/...
  • swig入门

    千次阅读 2012-12-03 00:30:53
    最近发现有些漏洞不能扫描,原来是没有需要的库,这些库原来是用SWIG生成的一些接口程序,于是顺便小研究了下这个SWIG是怎么回事。 下面是摘于SWIG中文网:http://swig.minidx.com/ SWIG是个帮助使用C或者C++...
    最近发现有些漏洞不能扫描,原来是没有需要的库,这些库原来是用SWIG生成的一些接口程序,于是顺便小研究了下这个SWIG是怎么回事。

    下面是摘于SWIG中文网:http://swig.minidx.com/

    SWIG是个帮助使用C或者C++编写的软件能与其它各种高级编程语言进行嵌入联接的开发工具。SWIG能应用于各种不同类型的语言包括常用脚本编译语言例如Perl, PHP, Python, Tcl, Ruby and PHP。支持语言列表中 也包括非脚本编译语言,例如C#, Common Lisp (CLISP, Allegro CL, CFFI, UFFI), Java, Modula-3, OCAML以及R,甚至是编译器或者汇编的计划应用(Guile, MzScheme, Chicken)。SWIG普遍应用于创建高级语言解析或汇编程序环境,用户接口,作为一种用来测试C/C++或进行原型设计的工具。SWIG还能够导出 XML或Lisp s-expressions格式的解析树。SWIG可以被自由使用,发布,修改用于商业或非商业中。

    SWIG使用教程
    想要快一点的方法吗,使用swig吧。假设你有一些c你想再加入Tcl, Perl, Python, Java and 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);
    }
    

    接口文件 

    现在,为了增加这些文件到你喜欢的语言中,你需要写一个接口文件(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();

    建立Tcl模块 

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

    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使用LOAD命令。

      建立Python模块

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

    unix % swig -python example.i
    unix % gcc -c example.c example_wrap.c \
    -I/usr/local/include/python2.1

    注:这个路径需视具体情况而定,我的目录在/usr/include/python2.5

    unix % ld -shared example.o example_wrap.o -o _example.so

    我们现在可以使用如下Python模块 :
    >>> import example
    >>> example.fact(5)
    120
    >>> example.my_mod(7,3)
    1
    >>> example.get_time()
    'Sun Feb 11 23:01:07 1996'
    >>>


    建立Perl模块

    你可以建立如下的Perl模块,如Solaris(请见其他操作系统的SWIG共享库帮助手册):

    unix % swig -perl5 example.i
    unix % gcc -c example.c example_wrap.c \
    `perl -MExtUtils::Embed -e ccopts`
    unix % ld -G example.o example_wrap.o -o example.so
    unix % perl
    use example;
    print $example::My_variable,"\n";
    print example::fact(5),"\n";
    print example::get_time(),"\n";
    <ctrl-d>
    3.0
    120
    Sun Feb 11 23:01:07 1996
    unix % 

    建立Java模块

    SWIG也会产生JNI代码以便Java代码进入C/C++。以下是建立一个Java模块的事例(cygwin ,见其他操作系统的swig维基共享库页帮助):

    $ swig -java example.i
    $ gcc -c example.c example_wrap.c -I/c/jdk1.3.1/include -I/c/jdk1.3.1/include/win32
    $ gcc -shared example.o example_wrap.o -mno-cygwin -Wl,--add-stdcall-alias -o example.dll
    $ cat main.java
    public class main {
    public static void main(String argv[]) {
    System.loadLibrary("example");
    System.out.println(example.getMy_variable());
    System.out.println(example.fact(5));
    System.out.println(example.get_time());
    }
    }
    $ javac main.java
    $ java main
    3.0
    120
    Mon Mar 4 18:20:31 2002
    $

    建立C#模块 

    SWIG也会产生代码以便C#使用Pinvoke进入C/C++。以下是如何建立C#模块事例。cygwin ,见其他操作系统的swig维基共享库页帮助。使用了开源DotGNU Portable.NET能够在大多数Unix系统上运行,和其他C# compilers一样方便使用:

    $ swig -csharp example.i
    $ gcc -c -fpic example.c example_wrap.c
    $ gcc -shared example.o example_wrap.o -o libexample.so
    $ cscc -o runme *.cs
    $ cat runme.cs
    using System;
    public class runme {
    static void Main() {
    Console.WriteLine(example.My_variable);
    Console.WriteLine(example.fact(5));
    Console.WriteLine(example.get_time());
    }
    }
    $ ilrun runme
    3
    120
    Tue May 13 10:45:45 2003
    
    $

    SWIG 懒人方法 

    如上所见,并非总是需要写一个专门的接口文件。如果你有一个头文件,你可以直接在其中包含SWIG接口,如例:

    %module example
    %{
    /* Includes the header in the wrapper code */
    #include "header.h"
    %}
    
    /* Parse the header file to generate wrappers */
    %include "header.h"
    
    //另外,有些人可能只包括SWIG条件指令在头文件中。例如:
    #ifdef SWIG
    %module example
    %{
    #include "header.h"
    %}
    #endif
    
    extern int fact(int n);
    ...


    Microsoft Windows下运行SWIG SWIG能够运行在所有已知的32位版本的WINDOWS下95/98/NT/2000/XP。SWIG通常使用命令提示符因此能够使用NMAKE。模块 通常由DLL编译,可动态加载入Tcl, Python,或者任何你使用的语言。只需要小小加工,SWIG就能够在MS下发挥巨大作用。 That's it (well, more or less) 在开始前,你需要知道的事情。这里是简短的清单:
    明确模块名称
    使用 ANSI C/C++
    理解如何编写一个共享模块/动态连接库(可能需要阅读一些所使用的编译器的帮助文件)
    放松
    Surely there's more to it... 上述例子都很简单,但是大体思路已经延伸到复杂的C/C++。事实上,重要的是明白SWIG一个完整的C++支持下几乎能包含所有语言的特征。这些包括预处理,指针,类,甚至C++模块。SWIG能够在特定语言打包结构和类变成PROXY。
    为了说明这一点,假设你想要封装以下C++数据结构:
    // pair.h. A pair like the STL
    namespace std {
    template<class T1, class T2> struct pair {
    T1 first;
    T2 second;
    pair() : first(T1()), second(T2()) { };
    pair(const T1 &f, const T2 &s) : first(f), second(s) { }
    };
    }
    
    为了封装SWIG你需要如下接口:
    // pair.i - SWIG interface
    %module pair
    %{
    #include "pair.h"
    %}
    
    // Ignore the default constructor
    %ignore std::pair::pair(); 
    
    // Parse the original header file
    %include "pair.h"
    
    // Instantiate some templates
    
    %template(pairii) std::pair<int,int>;
    %template(pairdi) std::pair<double,int>;

    接下去是编译(Python):
    $ swig -python -c++ pair.i
    $ c++ -c pair_wrap.c -I/usr/local/include/python2.1
    $ c++ -shared pair_wrap.o -o _pair.so
    $ python
    Python 2.1 (#3, Aug 20 2001, 15:41:42) 
    [GCC 2.95.2 19991024 (release)] on sunos5
    Type "copyright", "credits" or "license" for more information.
    >>> import pair
    >>> a = pair.pairii(3,4)
    >>> a.first
    3
    >>> a.second
    4
    >>> a.second = 16
    >>> a.second
    16
    >>> b = pair.pairdi(3.5,8)
    >>> b.first
    3.5
    >>> b.second
    8
    

    c++的程序试了下,没有成功。还需要继续研究。c的倒是已经成功了。感觉这个
    工具还是很强大的。以前看过EMC的一个3D图形程序的源代码,里面是直接按照PYTHON
    的C/C++扩展实现的,很是复杂。用这个工具真是简单得太多了。
    
    
    展开全文
  • <div><p>Provide <code>bindings/swig</code> if and only if we are using <code>swig_matlab, though in an admittedly somewhat brittle way. <p>Fixes #2957. <p>This change is ...
  • MAINT: Nicer swig wrappers

    2020-11-20 21:28:34
    Also, Re #882, #879, this now generates nicer swig python wrappers that have the proper function signatures when using a sufficiently new version of swig (definitely 3.0.6, not 3.0.2, not sure exactly...
  • SWIG 3.0.5 broken?

    2020-11-20 21:23:32
    m getting some strange behavior in SWIG 3.0.5 on my Mac (OS X 10.10.3). In particular, some of the wrapped classes no longer accept *args</code> as their argument list -- it is set to whatever is in ...
  • cxx.h in SWIG

    2020-12-01 11:21:09
    I had to make these small modifications for SWIG 4.0.1. There is a recent 4.0.2 that I haven't tried. <pre><code> #ifndef SWIG template <typename t> template <typename... fields> Box&...
  • 使用SWIG编译PHP扩展

    2019-05-04 23:05:00
    <p>I have generated the swig wrapper like so, using the default <a href="https://github.com/chokkan/crfsuite/blob/master/swig/export.i" rel="nofollow noreferrer"><code>export.i</code></a>: <pre><code...

空空如也

1 2 3 4 5 ... 20
收藏数 2,901
精华内容 1,160
关键字:

SWIG