我正在尝试将编织与Python ANACONDA一起使用64位。由于编织需要Python 2.7,因此我创建了一个新的env来导入它,在代码执行过程中,事实证明缺少libpython27.a。所以我创建了这个库,即第一个创建了def文件,后来使用dll工具创建了库
C:\ProgramData\Anaconda3\envs\Python27>gendef python27.dll
C:\ProgramData\Anaconda3\envs\Python27>C:\MinGW64\bin\dlltool -v --dllname python27.dll --def python27.def --output-lib libpython27.a
创建库很好,但是在编织过程中,我找不到符号表。经过一些调试之后,这里有一个拒绝代码,它抱怨在新的python27.def中没有符号文件
File "C:\ProgramData\Anaconda3\envs\Python27\lib\site-packages\numpy\distutils\mingw32ccompiler.py", line 302, in generate_def
raise ValueError("Symbol table not found")
ValueError: Symbol table not found
def dump_table(dll):
st = subprocess.Popen(["objdump.exe", "-p", dll], stdout=subprocess.PIPE)
return st.stdout.readlines()
def generate_def(dll, dfile):
"""Given a dll file location, get all its exported symbols and dump them
into the given def file.
The .def file will be overwritten"""
dump = dump_table(dll)
for i in range(len(dump)):
if _START.match(dump[i].decode()):
break
else:
raise ValueError("Symbol table not found")
有什么想法吗??
答案 0 :(得分:0)
经过更多调查,Anaconda发行版本提供了msvcr90.dll而没有 符号表。因此,当调用msvcr90.dll的generate_def(dll,dfile)时,它将生成一个空的def文件。
修复该问题的方法是在第352行mingw32compiler.py中添加返回False
def build_msvcr_library(debug=False):
return False
if os.name != 'nt':
return False