[C++-sig] Re: to_python (by-value) converter

Simon Ouellet simon.ouellet at orthosoft.ca
Thu Sep 11 22:53:08 CEST 2003


to build boost on my linux station I compiled it with the following
command line
%bjam

An error occured when I built the test embedding.cpp in
libs/python/test/

%bjam -d 2 embedding
...found 1959 targets...
...updating 4 targets...
gcc-Link-action
../../../libs/python/test/bin/embedding.test/gcc/debug/runtime-link-dynamic/embedding

   
LD_LIBRARY_PATH=/usr/local/lib/python2.2/config:../../../libs/python/build/bin/libboost_python.so/gcc/debug/runtime-link-dynamic/shared-linkable-true
    export LD_LIBRARY_PATH
    g++   -g  -o
"../../../libs/python/test/bin/embedding.test/gcc/debug/runtime-link-dynamic/embedding"  -L"/usr/local/lib/python2.2/config" -L"../../../libs/python/build/bin/libboost_python.so/gcc/debug/runtime-link-dynamic/shared-linkable-true"   "../../../libs/python/test/bin/embedding.test/gcc/debug/runtime-link-dynamic/embedding.o"     -lpython2.2 -ldl -lutil -lboost_python  -Wl,-rpath-link,.


/usr/local/lib/python2.2/config/libpython2.2.a(posixmodule.o): In
function `posix_tmpnam':
/usr/local/Python-2.2.1/./Modules/posixmodule.c:4501: the use of
`tmpnam_r' is dangerous, better use `mkstemp'
/usr/local/lib/python2.2/config/libpython2.2.a(posixmodule.o): In
function `posix_tempnam':
/usr/local/Python-2.2.1/./Modules/posixmodule.c:4451: the use of
`tempnam' is dangerous, better use `mkstemp'
/usr/local/lib/python2.2/config/libpython2.2.a(thread.o): In function
`PyThread_start_new_thread':
/usr/local/Python-2.2.1/Python/thread_pthread.h:180: undefined reference
to `pthread_sigmask'
/usr/local/Python-2.2.1/Python/thread_pthread.h:182: undefined reference
to `pthread_create'
/usr/local/Python-2.2.1/Python/thread_pthread.h:207: undefined reference
to `pthread_sigmask'
/usr/local/Python-2.2.1/Python/thread_pthread.h:216: undefined reference
to `pthread_detach'
collect2: ld returned 1 exit status


To built it I added -lpthread at the command line 
g++   -g  -o
"../../../libs/python/test/bin/embedding.test/gcc/debug/runtime-link-dynamic/embedding"  -L"/usr/local/lib/python2.2/config" -L"../../../libs/python/build/bin/libboost_python.so/gcc/debug/runtime-link-dynamic/shared-linkable-true"   "../../../libs/python/test/bin/embedding.test/gcc/debug/runtime-link-dynamic/embedding.o"     -lpython2.2 -ldl -lutil -lboost_python  -Wl,-rpath-link,. -lpthread


After that I make symbolic link of boost shared libraries in
/usr/local/lib/

My LD_LIBRARY_PATH contain /usr/local/lib of course.

And I start the test
%bin/embedding.test/gcc/debug/runtime-link-dynamic/embedding

I have no problem running the current version of embedding.cpp.
The output is
Hello from C++!
Hello from Python!


but the test doesn't cover the feature I'm currently looking for.

I modified the test to cover the conversion of a C++ object into a
python::object and it doesn't work.

I attached the diff that I made.


I built the the modified embedding.cpp the same way

When I ran it I got:

TypeError: No to_python (by-value) converter found for C++ type:
10CppDerived


Thanks.


On Thu, 2003-09-11 at 15:24, David Abrahams wrote:
> Stefan Seefeld <stefan.seefeld at orthosoft.ca> writes:
> 
> > Simon Ouellet wrote:
> >> On Thu, 2003-09-11 at 11:43, David Abrahams wrote:
> >
> >>>It works perfectly fine for me (with the current CVS state).  Are you
> >>>using Boost.Build or getting "creative" with your build?
> >>>
> >> I'm using g++3.2  on linux and  CC MIPSpro Version 7.3.1.3m on IRIX.
> >> I'm using boost_30.2 and I got the error on both platforms.
> 
> Let me be perfectly clear:
> 
>     How are you doing the build?
> 
>     How are you running the test?
> 
> Please show command lines and Jamfiles.
> 
> -- 
> Dave Abrahams
> Boost Consulting
> www.boost-consulting.com
> 
> 
> _______________________________________________
> C++-sig mailing list
> C++-sig at python.org
> http://mail.python.org/mailman/listinfo/c++-sig
-- 
_________________________________________________________
Simon Ouellet		email: simon.ouellet at orthosoft.ca
Programmeur 		tel:   514-861-4074 #269
Orthosoft Inc.		fax:   514-866-2197

-------------- next part --------------
75,77c75,79
<     python::handle<> main_namespace(
<         python::borrowed(PyModule_GetDict(main_module.get())) );
< 
---
>     python::object main_namespace = python::object(python::borrowed(
>                                                       PyModule_GetDict(main_module.get())));
>     CppDerived b;    
>     main_namespace["aBase"] = b;
>     
86c88
<         Py_file_input, main_namespace.get(), main_namespace.get())
---
>         Py_file_input, main_namespace.ptr(), main_namespace.ptr())
94c96
<                      main_namespace.get(), main_namespace.get()) );
---
>                      main_namespace.ptr(), main_namespace.ptr()) );


More information about the Cplusplus-sig mailing list