i'm trying build boost::python module using scons. i've managed find code snippets on web , stitch them builds correctly on linux. have major problems on windows (using visual studio 2013 compiler). here's code:
import distutils.sysconfig, os,sys def tool_boost_distutils(env): vars = distutils.sysconfig.get_config_vars('cc', 'cxx', 'opt', 'basecflags', 'ccshared', 'ldshared', 'so') in range(len(vars)): if vars[i] none: vars[i] = "" (cc, cxx, opt, basecflags, ccshared, ldshared, so_ext) = vars env.appendunique(cpppath=[distutils.sysconfig.get_python_inc(), "d:/boost-vs2013/include/boost-1_57"]) if sys.platform == "win32": print "configuring windows" env.appendunique(cxxflags=["/md","/ehsc"]) else: env.appendunique(libs="boost_python") env.appendunique(cxxflags =["-std=c++11"]) env['shlibsuffix']=so_ext env.appendunique(libpath = [distutils.sysconfig.get_python_inc()+"/libs", distutils.sysconfig.prefix+"/libs","d:/boost-vs2013/lib"]) default('.') env=environment(tools=['default', tool_boost_distutils],target_arch = 'x86') env.sharedlibrary(target='runga', source=['runga.cpp']) during build, following files created:
runga.obj
runga.pyd
runga.exp
runga.lib
to import module need .dll file instead of .lib, i'm not sure how properly.
edit 04.06.15: when trying import runga module (by 'import runga'), following error message: 'importerror: dll load failed : specified module not found.'
edit2 04.06.15:
i've managed solve problem. turned out .dll file boost python missing project's directory , system paths , runga.pyd depended on it. thank help.
you generating .dll need, has been renamed .pyd file. needs have leading _ in it's filename before python module load it. can appending following line sconstruct...
if sys.platform == "win32": print "configuring windows" env.appendunique(cxxflags=["/md","/ehsc"]) env.replace(ldmoduleprefix='_', shlibprefix='_') the order of building see runga.obj being built runga.cpp file, library runga.lib gets built, , runga.exp , runga.lib used create runga.pyd. is, exporting .dll you, renaming .pyd.
this different see on linux, end runga.o, runga.py, , _runga.so. on linux dynamic library needs named _module.so, , on windows, needs named _module.pyd.
Comments
Post a Comment