[Tutor] C API Tutorial Class Question
Arthur Coleman
arthur at nowsol.com
Thu May 3 21:48:12 CEST 2007
I am using Windows XP and have successfully build the Boost libraries, plus
boost_python.dll. I am trying to work through the C API tutorial where the
file hello.cpp is found at libs/python/example/tutorial. I have been able
to compile and execute the first example building the supplied hello.cpp
file that allows Python to import a C function, but when I move onto the
next example in the tutorial:
struct World
{
void set(std::string msg) { this->msg = msg; }
std::string greet() { return msg; }
std::string msg;
};
#include <boost/python.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(hello)
{
class_<World>("World")
.def("greet", &World::greet)
.def("set", &World::set)
;
}
I replace the original contents of hello.cpp with the above code and using
bjam tried to build hello.pyd. I receive the following errors:
...found 1513 targets...
...updating 4 targets...
vc-C++ bin\tutorial\hello.pyd\vc-8_0\debug\threading-multi\hello.obj
hello.cpp
hello.cpp(22) : error C2976: 'boost::python::class_' : too few template
arguments
G:\boost_1_33_1\boost/python/def_visitor.hpp(14) : see declaration
of 'boost::python::class_'
hello.cpp(22) : error C2440: '<function-style-cast>' : cannot convert from
'const char [6]' to 'boost::python::class_'
Source or target has incomplete type
hello.cpp(22) : error C2228: left of '.def' must have class/struct/union
hello.cpp(22) : error C2228: left of '.def' must have class/struct/union
hello.cpp(22) : error C2143: syntax error : missing ';' before '}'
CALL "C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.BAT"
>nul
"C:\Program Files\Microsoft Visual Studio 8\VC\bin\cl" /Zm800 -nologo
/EHsc -c -DBOOST_PYTHON_DYNAMIC_LIB /Z7 /Od /Ob0 /EHsc /GR /MDd
/Zc:forScope /Zc:wchar_t -I"bin\tutorial" -I"G:\boost_1_33_1"
-I"c:\Python25\include"
-Fo"bin\tutorial\hello.pyd\vc-8_0\debug\threading-multi\hello.obj"
-Tp"hello.cpp"
...failed vc-C++
bin\tutorial\hello.pyd\vc-8_0\debug\threading-multi\hello.obj...
...skipped <@tutorial\hello.pyd\vc-8_0\debug\threading-multi>hello.CMD for
lack of <@tutorial\hello.pyd\vc-8_0\debug\threading-multi>hello.obj...
...skipped <@tutorial\hello.pyd\vc-8_0\debug\threading-multi>hello.pyd for
lack of <@tutorial\hello.pyd\vc-8_0\debug\threading-multi>hello.CMD...
...skipped <@tutorial\hello.pyd\vc-8_0\debug\threading-multi>hello.lib for
lack of <@tutorial\hello.pyd\vc-8_0\debug\threading-multi>hello.CMD...
...failed updating 1 target...
...skipped 3 targets...
I reviewed the definition of class_ in file def_visitor.hpp and found that
it was defined as:
template<T1, X1, X2, X3> class class_;
I have tried searching the FAQ and the Web and so far no luck. I would
appreciate any help.
Arthur
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20070503/aaaeb344/attachment-0001.html
More information about the Tutor
mailing list