
I am learning boost python. I have the following code: //test.cpp------------------------------------------------------------------ ----------------------------- #include <boost/python/module.hpp> #include <boost/python/class.hpp> #include <boost/python/def.hpp> #include <boost/python/reference_existing_object.hpp> #include <boost/python/return_value_policy.hpp> #include <utility> // classes to wrap class Singleton { public: static Singleton* get_it() {return &just_one;} private: Singleton() : x(0) {} public: int exchange(int n) // set x and return the old value { std::swap(n, x); return n; } private: int x; static Singleton just_one; }; // Wrapper code using namespace boost::python; BOOST_PYTHON_MODULE(singleton) { class_<Singleton, boost::noncopyable>("Singleton", no_init) .def("get_it", &Singleton::get_it, return_value_policy<reference_existing_object>()).staticmethod("get_it") .def("exchange", &Singleton::exchange) ; } //-------------------------------------------------------------------------- ------------------------------------------------ My Jamfile is as following: //-------------------------------------------------------------------------- ------------------------------------------------ # This is the top of our own project tree project-root ; # Include definitions needed for Python modules import python ; extension singleton # Declare a Python extension called hello : hello.cpp # source # requirements and dependencies for Boost.Python extensions <template>@boost/libs/python/build/extension ; //-------------------------------------------------------------------------- ---------------------------------------------- When I run it, I get the following error message: Python 2.5 (r25:51908, Jan 30 2007, 15:03:58) [GCC 4.0.2 20051125 (Red Hat 4.0.2-8)] on linux2 Type "help", "copyright", "credits" or "license" for more information.
import singleton Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: ./singleton.so: undefined symbol: _ZN9Singleton8just_oneE
Can anyone help me? Thanks!!! Jin Sun --------------------------------------------------------- Rekhi Hall 301 1400 Townsend Dr. Houghton MI, 49931 USA Phone: 906-370-2261 ---------------------------------------------------------