2016-09-22 53 views
0

我想建立我自己的python(3.5.2)c扩展取决于zlib。使用Linux上的gcc它完美的工作,但我似乎无法使它在Windows 64位上工作。与python扩展VS2015链接器错误

我按照说明书安装zlib的DLL:

Installing ZLIB1.DLL 
==================== 
    Copy ZLIB1.DLL to the SYSTEM or the SYSTEM32 directory. 


Using ZLIB1.DLL with Microsoft Visual C++ 
========================================= 
    1. Install the supplied header files "zlib.h" and "zconf.h" 
     into a directory found in the INCLUDE path list. 

    2. Install the supplied library file "zdll.lib" into a 
     directory found in the LIB path list. 

    3. Add "zdll.lib" to your project. 

我setup.py:

from setuptools import setup, Extension 
from Cython.Build import cythonize 

setup(
    ext_modules=cythonize([Extension("esp", ["bethlib/esp.pyx", "bethlib/c_esp.c", "bethlib/linked_list.c"], libraries=["zdll"], include_dirs=["include"], library_dirs=["lib"])]), 
) 

试图建立与python setup.py bdist_wheel给出了错误:

c_esp.obj : error LNK2001: unresolved external symbol uncompress 
build\lib.win-amd64-3.5\esp.cp35-win_amd64.pyd : fatal error LNK1120: 1 unresolved externals 
error: command 'E:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe' failed with exit status 1120 

uncompress是一个存在于zlib.h中的有效函数。任何解决方案谢谢!

+0

在Windows上,您必须使用与用于构建Python解释器并推测为'zlib.dll'(或者使用gcc)相同版本的VS来构建扩展。 – martineau

+0

是的,使用VS2015(visual C++编译器14.0),并且zlib建议按照使用方法安装的zlib1.dll –

+0

您确定zlib是x64版本吗? – refi64

回答

0

我从this website下载了静态zlib库,它工作正常。这是一个旧版本,所以我仍然会欣赏,如果我能够获得更新的版本,但现在已经足够了。