[C++-sig] boost::python on Linux
Jim Treadway
jimtreadway at gmail.com
Tue Jun 23 20:45:11 CEST 2009
I'm having trouble getting a simple boost::python sample program to
work properly on Linux. It compiles and seems to link properly, but the Python
interpreter is unable to call my C++ function. On Mac OS X the
program works as expected.
Any help would be appreciated, hopefully I'm missing something obvious.
The program output is:
-- BEGIN --
Traceback (most recent call last):
File "<string>", line 1, in <module>
Boost.Python.ArgumentError: Python argument types in
Test.test(int)
did not match C++ signature:
test(int)
-- END --
Here is the code. It's compiled and linked using "g++
-I/usr/include/python2.5 -lpython2.5 -lboost_python -Wall -o test
test.cpp". On the Linux box I'm using boost-1.37.0 and python-2.5.2.
-- BEGIN --
#include <stdlib.h>
#include <string>
#include <boost/python.hpp>
using namespace boost::python;
/* g++ -I/usr/include/python2.5 -lpython2.5 -lboost_python -Wall -o
test test.cpp */
int test(int i)
{
fprintf(stderr, "%s:\n", __FUNCTION__);
return i * 5;
}
BOOST_PYTHON_MODULE(Test)
{
using namespace boost::python;
def("test", test);
}
int main(int argc, char *argv[])
{
Py_Initialize();
try {
initTest();
PyRun_SimpleString("import Test");
PyRun_SimpleString("print 'calling test function'");
PyRun_SimpleString("print Test.test(5)");
} catch (boost::python::error_already_set) {
PyErr_Print();
}
Py_Finalize();
return 0;
}
-- END --
More information about the Cplusplus-sig
mailing list