I'm trying to wrap a C++ singleton with boost::python:
class EigenSolver {
    private:
        static EigenSolver* _self;
        static int _refCount;
    protected:
        EigenSolver();
        ~EigenSolver();
    private:
        EigenSolverOptions _options;
        BasicTypes::Array<double> eigenValues;
        BasicTypes::RegularArray <double> eigenVectors;
    public:
        // singleton initialization, returns unique instance
        static EigenSolver* Instance() {
            if (!_self) _self = new EigenSolver();
            return _self;
        }
        // singleton memory free
        void FreeInst() {
            _refCount--;
            if (!_refCount) {
                delete this;
                _self = NULL;
            }
        }
};
Wrapper code:
py::class_<EigenSolver, boost::shared_ptr<EigenSolver>, boost::noncopyable>
    ("EigenSolver", py::no_init)
    .def("Instance", &EigenSolver::Instance, py::return_internal_reference<>())
When I try to compile the library, I get an unresolved external symbol error:
error LNK2001: unresolved external symbol 
"private: static class UTILS::EigenSolver * UTILS::EigenSolver::_self" 
(?_self@EigenSolver@UTILS@@0PEAV12@EA)
PythonBindingsSolverLib.lib
What is the right way to wrap a C++ singleton class?
What is the right way to wrap a C++ singleton class using boost::python?
Thanks in advance, Ivan.
 
    