2013-11-20 3 views
0

Я пытаюсь скомпилировать подталкивание python tutorial files.What происходит то, что работает bjam я получаю следующие файлы, созданные в бен/MSVC-11,0/отладки каталога:подталкивание питон не удается создать DLL Extension

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.

Но не длл created.If Я бегу hello.py я подвожу:

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

Почему bjam не строит DLL?

+0

bjam - страшный выбор для системы сборки imo. Вы можете найти учебники о том, как использовать, например, scons для создания расширенных расширений python. Вот что я делаю. Я не знаю, на ваш вопрос. Если вас интересует более подробная информация о том, как это сделать, сообщите мне, и я кое-что добавлю, хотя есть примеры в Интернете. –

+0

Да, я уже нашел несколько статей, посвященных scons.I проверю его. Но если вы могли бы привести пример, как это можно сделать с этим, я буду признателен. –

ответ

0

Следующий файл является дословным из одного из моих проектов и должен дать вам представление. Обратите внимание, что он пытается найти версию Python по умолчанию для связи. Там могут быть лучшие способы сделать это. Не стесняйтесь задавать вопросы в комментариях, если что-то неясно. Модуль Boost Python, созданный с помощью этого SConstruct, называется 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

Я посмотрю на него, хотя я на окнах. –

Смежные вопросы