Hi,

Let me be more explicit:

If my BOOST thing is:  BOOST_PYTHON_MODULE(opus_encoder_strategy) and my 
Makefile is like this:

all: opus_encoder_strategy.so

opus_encoder_strategy.so: opus_encoder_strategy.o
        ${CC} ${CInc} ${CLinkFlags} $^ -o $@


opus_encoder_strategy.o:  opus_encoder_strategy.cpp
        ${CC} ${CFLAGS} ${CInc} opus_encoder_strategy.cpp -o 
opus_encoder_strategy.o

and I build the name of the .so file to be opus_encoder_strategy.so, then I am 
able to access the embedded class.  

HOWEVER, if I change the BOOST thing to BOOST_PYTHON_MODULE(opus_strategy) and 
my make file to this:

all: opus_strategy.so #lv2strategy.so


opus_strategy.so: opus_strategy.o
        ${CC} ${CInc} ${CLinkFlags} $^ -o $@


opus_strategy.o:  opus_encoder_strategy.cpp
        ${CC} ${CFLAGS} ${CInc} opus_encoder_strategy.cpp -o opus_strategy.o

it doesn’t work.  

NOTE that I am matching the BOOST thing to the name of the .so file, this case 
opus_strategy.so

It seems that it is looking at something else like the actual name of the cpp 
file or cpp file?  This makes no sense to me and there is no documentation on 
how to properly use this.
I am using python 3.  Is this an issue.  The documentation needs substantial 
improvement and clarification.

Please advise ASAP.

-Jon

> On Sep 9, 2016, at 4:07 AM, Holger Joukl <holger.jo...@lbbw.de> wrote:
> 
> Hi,
> 
> "Cplusplus-sig" <cplusplus-sig-bounces+holger.joukl=lbbw...@python.org>
> schrieb am 09.09.2016 02:33:57:
> 
>> Hi,
>> 
>> And here is yet another person who seems to encounter the same issue:
>> http://stackoverflow.com/questions/9140572/c-boost-python-2-problems
>> 
>> -Jon
> 
> Python expects an init function for extension modules named initNAME
> where NAME is the name of the extension module, i.e. NAME.so.
> (see https://docs.python.org/2/extending/extending.html)
> 
> BOOST_PYTHON_MODULE is boost.python's macro for automagically giving you
> such
> an init function.
> 
> So in the directives
> - in the boost.python wrapper code: BOOST_PYTHON_MODULE(NAME)
> - in the Jamroot file: python-extension NAME
> (or maybe if you compile without bjam, in your g++ link step the -o
> Parameter:
> g++ -shared -oNAME.so -Wl,-h -Wl,NAME.so ...
> # don't know if the SONAME setting (-Wl,-h -Wl,NAME.so) must also match as
> # Python dlopen()s the extension)
> 
> NAME must be consistent.
> 
> Holger
> 
> Landesbank Baden-Wuerttemberg
> Anstalt des oeffentlichen Rechts
> Hauptsitze: Stuttgart, Karlsruhe, Mannheim, Mainz
> HRA 12704
> Amtsgericht Stuttgart
> 
> _______________________________________________
> Cplusplus-sig mailing list
> Cplusplus-sig@python.org
> https://mail.python.org/mailman/listinfo/cplusplus-sig

_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
https://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to