trying to use swig for the first time

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Gary Wilson Jr

    #1

    trying to use swig for the first time

    ....I have some C code (foo.c and foo.h) that I would like to be able to access
    using python.

    I've written my interface file (foo.i) like so:
    %module foo
    %{
    #include "foo.h"
    %}
    %include "foo.h"

    I then do the following on the command line:
    $ swig -python foo.i
    $ gcc -c foo.c foo_wrap.c -I /usr/include/python2.4
    $ ld -shared foo.o foo_wrap.o -o _foo.so

    Then when I try importing the module into python:
    $ python -c "import foo"
    Traceback (most recent call last):
    File "<string>", line 1, in ?
    File "foo.py", line 5, in ?
    import _foo
    ImportError: ./_foo.so: undefined symbol: EVP_DecodeBlock

    Now, EVP_DecodeBlock can be found in /usr/include/openssl/evp.h:
    int EVP_DecodeBlock (unsigned char *t, const unsigned char *f, int n);

    And evp.h in included in foo.h:
    #include <openssl/evp.h>

    What am I doing wrong here?
    Do I need to include more in the interface file?

    I tried adding the EVP_DecodeBlock declaration to the interface file like so:
    %module foo
    %{
    #include "foo.h"
    extern int EVP_DecodeBlock (unsigned char *t, const unsigned char *f, int n);
    %}
    %include "foo.h"
    extern int EVP_DecodeBlock (unsigned char *t, const unsigned char *f, int n);

    But this led to the exact same error when trying to import the python module.
Working...