Stefan Seefeld wrote: > On 10/26/2012 01:50 PM, Paul O. Seidon wrote: >> The ctor is decl'ed in varbls.h as >> >> _Variable(); >> >> and it's def'ed in varbls.cpp like so: >> >> template <typename TYPE> >> _Variable<TYPE>::_Variable() >> : _value( 0) >> { >> //ctor >> } > > That doesn't work. When the compiler compiles varbls.cpp, it doesn't > know what types to instantiate the _Variable template for, so you need > to either explicitly instantiate it for all the types you use in your > module, or keep the definitions in the varbls.h header so the compiler > can implicitly instantiate them when compiling the Python module. > > Stefan >
That didn't make any difference. And it would have surprised me, if it did: varbls.h contains the declaration, varbls.cpp contains the definition, the wrapper is in main.cpp. So if the compiler sees any need to include sometihng, it will and the linker will link the definition. But you certainly are right, the symbol is in the .so-file but the symbol isn't resolved by the linker. Hm, but where should I instantiate the class? I thought BOOST_PYTHON_MODULE(_varbls) { class_<VariableDouble>("VariableDouble") .def( init<>()) .def( init<const double&>()) ; } would do that. Should I try dont_care = _Variable<double>(); in main.cpp? Looks a bit strange, but would force the compiler to generate code for sure. Paul _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig