2013-11-20 48 views
0

我試圖編譯升壓python tutorial files.What情況是,正在運行的bjam我得到的斌/ MSVC-11.0 /調試目錄中創建下列文件:升壓蟒蛇無法創建擴展DLL

hello.obj ,hello.obj.rsp,hello_ext.exp,hello_ext.lib,hello_ext.pdb,hello_ext.pyd,hello_ext.pdb.manifest,hello_ext.pyd.rsp。

但是,沒有DLL created.If我運行hello.py我越來越:

Import Error:DLL load failed.The specific module could not be found.

爲什麼的bjam不會生成的dll?

+0

bjam是構建系統imo的可怕選擇。你可以找到關於如何使用例如scons來構建boost python擴展的教程。這就是我所做的。這不能回答你的問題,我知道。如果你對如何做到這一點有更多的細節感興趣,讓我知道,我會添加一些東西,雖然有線上的例子。 –

+0

是的,我已經發現一些提及scons.s的文章,我會檢查它。但如果你可以在這裏舉一個例子,它可以如何完成它,我會感激。 –

回答

0

下面的文件是從我的一個項目逐字記錄,並應該給你一個想法。 注意它試圖找到鏈接的默認版本的Python。這可能有更好的方法。 如果有不明之處,請隨時在評論中提問。 使用此SConstruct構建的Boost Python模塊稱爲genocpp。如果你克隆了 項目代碼,假設你使用的是Linux,你應該可以構建它。隨着Windows,它會更困難。

您還可以在線找到該文件https://bitbucket.org/faheem/snppy/src/tip/SConstruct?at=default作爲SNPPy項目代碼的一部分。

#!/usr/bin/python 

import commands, glob, os 

# Common file, for both executables and Python Interface 
common_files = """geno print""" 

def pyversion(): 
     pystr = commands.getoutput('python -V') 
     version = pystr.split(' ')[1] 
     major, minor = version.split('.')[:2] 
     return major + '.' + minor 

common_base = Split(common_files) 
common = [f + ".cpp" for f in common_base] 
common_obj = [f+".o" for f in common_base] 

# For Python interface only 
pif_conv = Split("cppvec_conv cppmap_conv cppset_conv cppunicode_conv") 
pif_conv_files = [t+"_pif.cpp" for t in pif_conv] 
pif = Split("geno") 
pif_files = [t+"_pif.cpp" for t in pif] 

# Boost Python Environment 
boost_python_env = Environment(
    #CXX="g++-4.4", 
    CPPPATH=["/usr/include/python"+pyversion(), "."], 
    CXXFLAGS='-ftemplate-depth-100 -fPIC -Wall -Werror -pedantic -pipe -O3 -ffast-math -march=opteron', 
    CPPDEFINES=['BOOST_PYTHON_DYNAMIC_LIB'], 
    LIBPATH=["/usr/lib/python"+pyversion()+"/config"], 
    LIBS=["python"+pyversion(), "m", "boost_python"], 
    SHLIBPREFIX="", #gets rid of lib prefix 
    SHOBJSUFFIX = ".bpo" 
    ) 

test_env = Environment(
    #CXX="g++-4.4", 
    CXXFLAGS='-Wall -Werror -pedantic -O0 -g', 
    ) 

# Build boost python module 
boost_python_env.SharedLibrary(target='genocpp', source = common + pif_conv_files + pif_files) 
test_env.Program(target='geno_test', source = common + ["geno_test.cpp"]) 
+0

我會看看它,雖然我在窗戶上。 –