[C++-sig] Boost::Python for C code -> Segmentation fault
Mario Palomo
mario-p at iname.com
Thu Jul 22 20:27:55 CEST 2004
I'd like to use Boost::Python to wrap C code in python, but my first test
doesn't work:
FILE: hello.cpp
=================== BEGIN =======================
/*---------------- C code -------------------- */
#ifdef __cplusplus
extern "C" {
#endif
#include <stdio.h>
typedef struct user {
char *name;
int number;
}user;
void greet(user *u)
{
printf("Hello %s, your number is %d.\n"
, u->name, u->number);
}
#ifdef __cplusplus
}
#endif
/*-------------------------------------------- */
#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
#include <boost/python/class.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(hello)
{
class_<user>("user")
.def_readwrite("name", &user::name)
.def_readwrite("number", &user::number)
;
def("greet", greet);
}
==================== END ========================
I'm using Linux (Debian Sid) Boost::Python packages.
When I compile, I get:
$ g++ -c hello.cpp -Wall -I/usr/include/python2.3
$ ld -shared -o hello.so hello.o -lboost_python
All right, now I have 'hello.so', but when I try to use
the new module, I get a "Segmentation fault":
$ python
Python 2.3.4 (#2, Jul 5 2004, 09:15:05)
[GCC 3.3.4 (Debian 1:3.3.4-2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import hello
>>> u = hello.user()
>>> u.number=10
Segmentation fault
$
What's wrong?
Thanks in advance
More information about the Cplusplus-sig
mailing list