[C++-sig] Help with problem caused going from boost_1_33_1 to 1_35_0
Nicolas Rougier
Nicolas.Rougier at loria.fr
Tue Jun 10 09:01:55 CEST 2008
I tested the code on linux using the attached makefile (I'm not familiar
with bjam) and things are working ok (got 9 as a result of tes.py).
Is there any chance you're not loading the module you think you're
loading (from a previous installation of your python modules for
example) ?
Nicolas
Makefile:
---------
all:
g++ butterworth_iir.cpp -shared -o libbutterworth_iir.so
g++ py_butterworth_iir.cpp -I/usr/include/python2.5 -L . -lboost_python
-lbutterworth_iir -shared -o butterworth_iir.so
g++ iir_coeff.cpp -shared -o libiir_coeff.so
g++ py_iir_coeff.cpp -I/usr/include/python2.5 -L . -liir_coeff
-lboost_python -shared -o iir_coeff.so
clean:
rm *.so
On Mon, 2008-06-09 at 20:05 -0700, Tony Kirke wrote:
> Sorry, couldn't attach file. It is available here:
>
> http://pyspuc.com/testcase.tar.gz
>
> On Mon, Jun 9, 2008 at 6:58 PM, Tony Kirke <pyspuc at gmail.com> wrote:
> Thanks Ralf,
> I tried reversing the order to no avail. I'm attached a
> gzipped tar file of the example, if anyone would like to try
> it. I'd be grateful to confirm if there is an issue or not.
> Only things that may need to be edited would be path to
> boost_1_35_0 and python 2.4/2.5
> Tony
>
> 2008/6/9 Ralf W. Grosse-Kunstleve <rwgk at yahoo.com>:
>
> I stared at your code for a few minutes but I don't
> have an answer
> for you. It looks like it should work. I'm not aware
> of changes in
> Boost.Python that could make your code fail.
> I'd probably try to reverse the import order:
>
>
> from spucb.iir_coeff import *
> from spucb.butterworth_iir import *
>
>
> although I don't expect this to make a difference.
>
> Ralf
>
>
>
> ----- Original Message ----
> From: Tony Kirke <pyspuc at gmail.com>
> To: c++-sig at python.org
> Sent: Monday, June 9, 2008 8:25:20 AM
> Subject: [C++-sig] Help with problem caused going from
> boost_1_33_1 to 1_35_0
>
> Hi,
> My c++ code that worked fine for Boost_1_33_1
> (building with v1 system) is now giving the following
> error with 1_35_0:
>
> Boost.Python.ArgumentError: Python argument types in
> spucb.butterworth_iir.butterworth_iir(iir_coeff,
> float)
> did not match C++ signature:
> butterworth_iir(iir_coeff {lvalue}, float)
>
> I done a lot of searching to find out what changed in
> the newer Boost/boost build system and could not
> figure out what to do.
> Below is all of the code for a simple testcase. Since
> I have lots of code that is broken in this way, I'm
> wondering if there is an easy change that can be made
> to the boost wrapping code (or source itself) to make
> this functional. Is there a simple example of how
> this problem is solved. Was there a fundamental reason
> this is no longer supported?
> Thanks
>
> Tony
>
> ------------------------------------------
> class iir_coeff
> {
> public:
> long order;
>
> public:
> iir_coeff(long ord=1);
> ~iir_coeff();
> };
> ------------------------------------------
> #include "iir_coeff.h"
> iir_coeff::iir_coeff(long ord) {
> order = ord;
> }
> iir_coeff::~iir_coeff() {}
> ------------------------------------------
> // Boost Includes
> ==============================================================
> #include <boost/python.hpp>
> #include <boost/cstdint.hpp>
>
> // Includes
> ====================================================================
> #include "iir_coeff.h"
>
> // Using
> =======================================================================
> using namespace boost::python;
>
> // Module
> ======================================================================
> BOOST_PYTHON_MODULE(iir_coeff)
> {
> class_< iir_coeff >("iir_coeff", init< const
> iir_coeff& >())
> .def(init< optional< long int > >())
> .def_readwrite("order", &iir_coeff::order)
> ;
>
> }
> ------------------------------------------
> #include "iir_coeff.h"
> void butterworth_iir(iir_coeff& filt, float fcd);
> ------------------------------------------
> #include "butterworth_iir.h"
> void butterworth_iir(iir_coeff& filt, float fcd) {
> long order = filt.order;
> filt.order = order+1;
> }
> ------------------------------------------
> // Boost Includes
> ==============================================================
> #include <boost/python.hpp>
> #include <boost/cstdint.hpp>
>
> // Includes
> ====================================================================
> #include "butterworth_iir.h"
>
> // Using
> =======================================================================
> using namespace boost::python;
>
> // Module
> ======================================================================
> BOOST_PYTHON_MODULE(butterworth_iir)
> {
> def("butterworth_iir", &butterworth_iir);
> }
>
> ------------------------------------------
> use-project boost : ../../boost_1_35_0 ;
>
> project
> : requirements
> <library>/boost/python//boost_python/<link>static
> : usage-requirements <include>../../boost_1_35_0
> <include>.
> ;
>
> lib spuc :
> butterworth_iir.cpp
> iir_coeff.cpp
> :
> <include>.
> <include>../../boost_1_35_0
>
> ;
>
> alias staticspuc : spuc/<link>static ;
>
> import python ;
>
>
> python-extension butterworth_iir :
> py_butterworth_iir.cpp : <include>.
> <include>../../boost_1_35_0 : <library>staticspuc ;
> python-extension iir_coeff : py_iir_coeff.cpp :
> <include>. <include>../../boost_1_35_0 :
> <library>staticspuc ;
>
> install dist :
> __init__.py
> butterworth_iir
> iir_coeff
> :
>
> <location>/usr/lib/python2.4/site-packages/spucb
> ;
>
> ------------------------------------------
> boost-build ../../boost_1_35_0/tools/build/v2 ;
> ------------------------------------------
>
> from spucb.butterworth_iir import *
> from spucb.iir_coeff import *
> x=iir_coeff(8)
> butterworth_iir(x,0.24)
> print x.order
>
> ------------------------------------------
> Traceback (most recent call last):
> File "tes.py", line 4, in ?
> butterworth_iir(x,0.24)
> Boost.Python.ArgumentError: Python argument types in
> spucb.butterworth_iir.butterworth_iir(iir_coeff,
> float)
> did not match C++ signature:
> butterworth_iir(iir_coeff {lvalue}, float)
>
>
>
>
>
>
>
>
> _______________________________________________
> C++-sig mailing list
> C++-sig at python.org
> http://mail.python.org/mailman/listinfo/c++-sig
>
>
>
> _______________________________________________
> C++-sig mailing list
> C++-sig at python.org
> http://mail.python.org/mailman/listinfo/c++-sig
More information about the Cplusplus-sig
mailing list