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