Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: CoLSoN2 en 16 de Febrero de 2003, 10:30:53 PM

Título: Problemas usando swig para utilizar clases de C++ en python
Publicado por: CoLSoN2 en 16 de Febrero de 2003, 10:30:53 PM
                                Según el manual:
Citar
The preferred approach to building an extension module is to compile it into a shared object file or DLL. To do this, you need to compile your program using comands like this (shown for Linux):  

$ swig -python example.i
$ gcc -c example.c
$ gcc -c example_wrap.c -I/usr/local/include/python2.0
$ gcc -shared example.o example_wrap.o -o _example.so
yo no sé nada de linux, pero los dos primeros son compilar el archivo, supongo. El tercero que es? es que no consigo hacerlo funcionar y creo que esta es la clave :P (por cierto, el .o se refiere a .obj ?)

--thx in advance                                
Título: Problemas usando swig para utilizar clases de C++ en python
Publicado por: Juan Mellado en 16 de Febrero de 2003, 11:26:37 PM


$ swig -python example.i


Precompila el fichero example.i y genera example.c



$ gcc -c example.c


Compila example.c y genera example.o



$ gcc -c example_wrap.c -I/usr/local/include/python2.0


Compila example_wrap.c y genera example_wrap.o (la directiva -I indica los directorios en los que se encuentran los .h para los includes)



$ gcc -shared example.o example_wrap.o -o _example.so


Linka example.o y example_wrap.o y genera example.so (la directiva -shared y la extensión .so, shared object, indican que genere una librería dinámica, como las DLLs de Windows pero para Unix)

Y sí, los .o son los .obj.

Espero te sirva.
Saludos
Título: Problemas usando swig para utilizar clases de C++ en python
Publicado por: CoLSoN2 en 16 de Febrero de 2003, 11:47:52 PM
                               
CitarLinka example.o y example_wrap.o y genera example.so (la directiva -shared y la extensión .so, shared object, indican que genere una librería dinámica, como las DLLs de Windows pero para Unix)
hum.. entonces necesita un shared object (.so) de esos, o con una dll o algo servirá? (hablo de Windows) :                                
Título: Problemas usando swig para utilizar clases de C++ en python
Publicado por: Juan Mellado en 16 de Febrero de 2003, 11:59:18 PM
                                :?:

No es que necesite una .so sino que genera una .so.

El equivalente en Windows es generar una DLL.                                
Título: Problemas usando swig para utilizar clases de C++ en python
Publicado por: CoLSoN2 en 17 de Febrero de 2003, 12:00:04 AM
                                sí, funciona con dll's, ya funciona, aleluya ! :D

gracias Juan

EDIT: con lo de "necesita" me refería al script, para que funcionara :)