You definitely want the name of the extension .so file to be cylucene.so, so 
you will want to drop the 'lib' prefix.  Is your BOOST_PYTHON_MODULE contained 
in a file named cylucene.cpp?  It looks like you are using a cylucene.cpp file 
in the final step of your makefile, but it is not in your list of "FILES" for 
your scons script, so I don't think it is ever getting compiled and linked 
(that would be consistent with the error you are getting).  If that's the case, 
you can probably just add it to the FILES list and everything will come to life.

Also, here is a link from the boost.python howto which has an example of 
building with scons:

http://wiki.python.org/moin/boost.python/BuildingExtensions

Bill


________________________________________
From: cplusplus-sig-bounces+wladwig=wdtinc....@python.org 
[cplusplus-sig-bounces+wladwig=wdtinc....@python.org] On Behalf Of Nicolas Lara 
[nicolasl...@gmail.com]
Sent: Tuesday, July 07, 2009 7:54 AM
To: Development of Python/C++ integration
Subject: Re: [C++-sig] Building with Scons

Thanks for the reply,

Yes, I checked the name of the module. It matches the name of the
generated file. I also tried changing the name to include "lib" (since
scons also generates called libcylucene.so) but it doesnt work.
My module looks like this:

void init_util();

BOOST_PYTHON_MODULE(cylucene)
{
   init_util();
}

On Tue, Jul 7, 2009 at 2:53 AM, William Ladwig<wlad...@wdtinc.com> wrote:
> Does the name of the module defined in your BOOST_PYTHON_MODULE section match 
> the name of the .so file (assuming you are using Linux)?  That's usually the 
> error I get when I have a name mismatch.
>
> Also, I haven't really used scons, but shouldn't this:
>
> env.SharedLibrary(target='cylucene', source=FILES, SHLIBPREFIX='')
>
> be:
>
> env.SharedLibrary(target='cylucene', source=FILES, SHLIBPREFIX=''") ?
>
>
> Bill
>
>
> ________________________________________
> From: cplusplus-sig-bounces+wladwig=wdtinc....@python.org 
> [cplusplus-sig-bounces+wladwig=wdtinc....@python.org] On Behalf Of Nicolas 
> Lara [nicolasl...@gmail.com]
> Sent: Monday, July 06, 2009 6:25 PM
> To: Development of Python/C++ integration
> Subject: [C++-sig] Building with Scons
>
> Hello,
>
> I am trying to build a python extension with scons but the resulting
> library cannot be loaded:
>   ImportError: dynamic module does not define init function (initcylucene)
>
> I am using the following SConstruct file:
>
> FILES = ['typeconversion.cpp', 'document.cpp', 'search.cpp', 
> 'queryparser.cpp',
>         'analysis.cpp', 'index.cpp', 'store.cpp', 'util.cpp']
> def python_tool(env):
>    pybase = 'python%s' % sys.version[0:3]
>    env.Append(CPPPATH=[os.path.join(sys.prefix, 'include', pybase)],
>               LIBPATH=[os.path.join(sys.prefix, 'lib', pybase, 'config')],
>               LIBS=['lib%s' % pybase])
>    if env['PLATFORM'] not in ['cygwin', 'win32']:
>        env.Append(LIBS=['util'])
>
> def boost_python_tool(env):
>    env.Append(CPPDEFINES=['BOOST_PYTHON_DYNAMIC_LIB',
>                           'BOOST_PYTHON_DYNAMIC_MODULE'],
>               CPPPATH=['$boostIncludes'],  # boostIncludes is a PathOption
>               LIBS=['boost_python'])
>
> def clucene_tool(env):
>    env.Append(CPPPATH=['/usr/local/lib/CLucene/',
>                        '/usr/local/lib/'],
>               LIBS=['clucene'])
>
> import os
> env = Environment(ENV=os.environ, tools=['default', python_tool,
>                                         boost_python_tool, clucene_tool])
> env.SharedLibrary(target='cylucene', source=FILES, SHLIBPREFIX='')
>
>
> Previously I was using the following Makefile, which worked but was
> statically linked:
>
> SHELL = /bin/bash
> SRC = ./src/
> BUILD = ./build/
> INCLUDES = -I/usr/include/python2.6/ -I/usr/local/lib/ 
> -I/usr/local/lib/CLucene/
> LIBS = -lboost_python -lpython2.6 -lclucene
> CFLAGS = -shared -fPIC -g -pedantic -Wall -Wextra
> OBJECTS = document.o search.o queryparser.o analysis.o index.o store.o util.o
> LOBJECTS = $(BUILD)typeconversion.o $(BUILD)document.o
> $(BUILD)search.o $(BUILD)queryparser.o $(BUILD)analysis.o
> $(BUILD)index.o $(BUILD)store.o $(BUILD)util.o
>
> all: cylucene
>
> cylucene: $(OBJECTS)
>        mkdir -p $(BUILD) && cp $(SRC)initfile.py $(BUILD)__init__.py
>        $(CC) $(SRC)cylucene.cpp $(LOBJECTS) $(INCLUDES) $(LIBS) $(CFLAGS) -o
> $(BUILD)cylucene.so
>
> document.o: typeconversion.o
>        mkdir -p $(BUILD)
>        $(CC) $(SRC)document.cpp $(INCLUDES) $(LIBS) $(CFLAGS) -o 
> $(BUILD)document.o
>
> queryparser.o: typeconversion.o
>        mkdir -p $(BUILD)
>        $(CC) $(SRC)queryparser.cpp $(INCLUDES) $(LIBS) $(CFLAGS) -o
> $(BUILD)queryparser.o
>
> analysis.o:
>        mkdir -p $(BUILD)
>        $(CC) $(SRC)analysis.cpp $(INCLUDES) $(LIBS) $(CFLAGS) -o 
> $(BUILD)analysis.o
>
> search.o:
>        mkdir -p $(BUILD)
>        $(CC) $(SRC)search.cpp $(INCLUDES) $(LIBS) $(CFLAGS) -o 
> $(BUILD)search.o
>
> index.o:
>        mkdir -p $(BUILD)
>        $(CC) $(SRC)index.cpp $(INCLUDES) $(LIBS) $(CFLAGS) -o $(BUILD)index.o
>
> store.o:
>        mkdir -p $(BUILD)
>        $(CC) $(SRC)store.cpp $(INCLUDES) $(LIBS) $(CFLAGS) -o $(BUILD)store.o
>
> util.o:
>        mkdir -p $(BUILD)
>        $(CC) $(SRC)util.cpp $(INCLUDES) $(LIBS) $(CFLAGS) -o $(BUILD)util.o
>
> typeconversion.o:
>        mkdir -p $(BUILD)
>        $(CC) $(SRC)typeconversion.cpp $(CFLAGS) -o $(BUILD)typeconversion.o
>
> clean:
>        rm -Rf build/
>
>
> Does anyone have experience working with scons and boost::python? Can
> anyone help?
>
> Thanks in advance!
>
>
> --
> Nicolas Lara
> Linux user #380134
> http://nicolas-lara.blogspot.com/
> Public key id: 0x152e7713 at http://subkeys.pgp.net/
> _______________________________________________
> Cplusplus-sig mailing list
> Cplusplus-sig@python.org
> http://mail.python.org/mailman/listinfo/cplusplus-sig
> _______________________________________________
> Cplusplus-sig mailing list
> Cplusplus-sig@python.org
> http://mail.python.org/mailman/listinfo/cplusplus-sig
>



--
Nicolas Lara
Linux user #380134
http://nicolas-lara.blogspot.com/
Public key id: 0x152e7713 at http://subkeys.pgp.net/
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to