|
Boost : |
From: Alan Scales (alans_at_[hidden])
Date: 2002-10-24 21:54:08
boost python vs. 2.0 (boost 1_29_0):
msvc++ 6.0
compile problems
---------------------------------------------------------
i am having a problem compiling any statement containing a call policy.
in particular in the reference manual there is the following example:
#include <boost/python/module.hpp>
#include <boost/python/class.hpp>
#include <boost/python/reference_existing_object.hpp>
#include <boost/python/return_value_policy.hpp>
#include <utility>
// classes to wrap
struct Singleton
{
Singleton() : x(0) {}
int exchange(int n) // set x and return the old value
{
std::swap(n, x);
return n;
}
int x;
};
Singleton& get_it()
{
static Singleton just_one;
return just_one;
}
// Wrapper code
using namespace boost::python;
BOOST_PYTHON_MODULE(singleton)
{
def("get_it", get_it, reference_existing_object());
class_<Singleton>("Singleton")
.def("exchange", &Singleton::exchange)
;
}
The line
def("get_it", get_it, reference_existing_object());
results in the following compiler errors (comment it out and everything compiles)
c:\projects\components\boost\boost\python\detail\returning.hpp(102) : error C2039: 'result_converter' : is not a member of 'reference_existing_object'
c:\projects\components\boost\boost\python\reference_existing_object.hpp(28) : see declaration of 'reference_existing_object'
c:\projects\components\boost\boost\python\detail\caller.hpp(71) : see reference to function template instantiation 'struct _object *__cdecl boost::python::detail::returning<struct Singleton &>::call(struct Singleton &(__cdecl *)(void),struct
_object *,struct _object *,const struct boost::python::reference_existing_object *)' being compiled
c:\projects\components\boost\boost\python\detail\returning.hpp(102) : error C2146: syntax error : missing ';' before identifier 'result_converter'
c:\projects\components\boost\boost\python\detail\caller.hpp(71) : see reference to function template instantiation 'struct _object *__cdecl boost::python::detail::returning<struct Singleton &>::call(struct Singleton &(__cdecl *)(void),struct
_object *,struct _object *,const struct boost::python::reference_existing_object *)' being compiled
c:\projects\components\boost\boost\python\detail\returning.hpp(102) : warning C4091: '' : ignored on left of 'int' when no variable is declared
c:\projects\components\boost\boost\python\detail\caller.hpp(71) : see reference to function template instantiation 'struct _object *__cdecl boost::python::detail::returning<struct Singleton &>::call(struct Singleton &(__cdecl *)(void),struct
_object *,struct _object *,const struct boost::python::reference_existing_object *)' being compiled
and a bunch more.
I cannot use jam to build my extensions so i am just using visual studio (i have done this successfully in the pass with pre 2.0 versions).
I assume i am missing a #define or something dumb. if there is an faq or something i should be looking at just direct me there.
thanks in advance
alan scales
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk