Embedding Python

Mark Tolonen nospam at nospam.com
Sat Mar 26 13:38:01 EST 2005


"Markus Franz" <mf1987 at arcor.de> wrote in message 
news:576fb15a.0503260342.15ea4630 at posting.google.com...
> Hi!
>
> I wanted to run some Python code from inside a C program, so I did it
> like it was explained in the Python manual:
>
> #include <Python.h>
> int main(int argc, char *argv[]) {
> Py_Initialize();
> PyRun_SimpleString("print 'Hallo World!'\n");
> Py_Finalize();
> return 0;
> }
>
> Then I tried to compile this by using the command: gcc halloworld.cpp
> But everytime I get the following errors:
>
> /home/mmf/tmp/ccVD2V4h.o(.text+0x1d): In function `main':
> : undefined reference to `Py_Initialize'
> /home/mmf/tmp/ccVD2V4h.o(.text+0x2a): In function `main':
> : undefined reference to `PyRun_SimpleString'
> /home/mmf/tmp/ccVD2V4h.o(.text+0x32): In function `main':
> : undefined reference to `Py_Finalize'
> /home/mmf/tmp/ccVD2V4h.o(.eh_frame+0x11): undefined reference to
> `__gxx_personality_v0'
> collect2: ld returned 1 exit status
>
> What am I doing wrong?
>
> Markus

This works for me on Redhat 9:

g++ x.cpp -o x -I/usr/include/python2.2 -pthread -lm
  -ldl -lutil /usr/lib/python2.2/config/libpython2.2.a

I discovered what libraries to link to by asking distutils:

import distutils.sysconfig
distutils.sysconfig.get_config_var('LIBS')
distutils.sysconfig.get_config_var('SYSLIBS')

g++ links to the right libraries for .cpp files.

-Mark 





More information about the Python-list mailing list