Extendendo C++ com Python

Iniciado por fwannmacher, 02 de Novembro de 2008, 21:46

tópico anterior - próximo tópico

fwannmacher

Estou tentando usar o Python(2.5) como linguagem de script dentro do C++. Mas, quando eu tento compilar algum projeto que usa a bliblioteca do python, usando o Eclipse CDT ou o Code::Blocks ocorrem os seguintes erros:

Invoking: GCC C++ Linker
g++ -L/usr/lib/python2.5/config_d -L/usr/lib -o"EclipseCppTest2"  ./src/EclipseCppTest2.o   -lpython2.5 -ldb
/usr/lib/python2.5/config_d/libpython2.5.a(posixmodule.o): In function `posix_tmpnam':
/build/buildd/python2.5-2.5.2/build-debug/../Modules/posixmodule.c:6860: warning: the use of `tmpnam_r' is dangerous, better use `mkstemp'
/usr/lib/python2.5/config_d/libpython2.5.a(posixmodule.o): In function `posix_tempnam':
/build/buildd/python2.5-2.5.2/build-debug/../Modules/posixmodule.c:6815: warning: the use of `tempnam' is dangerous, better use `mkstemp'
/usr/lib/python2.5/config_d/libpython2.5.a(dynload_shlib.o): In function `_PyImport_GetDynLoadFunc':
/build/buildd/python2.5-2.5.2/build-debug/../Python/dynload_shlib.c:98: undefined reference to `dlsym'
/build/buildd/python2.5-2.5.2/build-debug/../Python/dynload_shlib.c:134: undefined reference to `dlopen'
/build/buildd/python2.5-2.5.2/build-debug/../Python/dynload_shlib.c:137: undefined reference to `dlerror'
/build/buildd/python2.5-2.5.2/build-debug/../Python/dynload_shlib.c:145: undefined reference to `dlsym'
/usr/lib/python2.5/config_d/libpython2.5.a(posixmodule.o): In function `posix_openpty':
posixmodule.c:(.text+0x24d8): undefined reference to `openpty'
/usr/lib/python2.5/config_d/libpython2.5.a(posixmodule.o): In function `posix_forkpty':
posixmodule.c:(.text+0x2535): undefined reference to `forkpty'

Alguém tem idéia do que pode ser?

o que diabos é "undefined reference to `dlsym'"?

Sou novato no mundo Linux. Usava o Window$, mas depois que descobri o Ubuntu, larguei aquela carroça de mão ;-)

Darcamo

Undefined reference é erro na linkagem. Ou seja, o gcc achou todos os arquivos .h de que precisava e compilou tudo, mas na hora de linkar ficou faltando incluir alguma biblioteca e as referências a funções contidas nessa(s) biblioteca(s) ficaram indefinidas.

Vi que você incluiu duas bibliotecas, python2.5 e db.
Não conheço essa DB e também nunca tentei juntar python com c++, mas imagino que ou falta incluir mais alguma ou faltou instalar o -dev dessas bibliotecas.

Ou seja, se uso uma biblioteca chamada "superlib" normalmente tenho que instalar um pacote com nome semelhante a "superlib-dev" para poder linkar com essa biblioteca.