执行python.exe .\setup.py bdist_wheel时出现cannot find -lzbar错误
解决zbarlight编译时找不到-lzbar的问题
错误信息翻译
...AppData\Local\Programs\Python\Python38 -LC:\zbarlight\venv\PCbuild\amd64 -lzbar -lpython38 -lvcruntime140 -o build\lib.win-amd64-3.8\zbarlight\_zbarlight.cp38-win_amd64.pyd C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: 找不到 -lzbar collect2.exe: error: ld 返回1退出状态
问题分析
这是链接器ld.exe无法定位zbar库文件(libzbar.a或zbar.lib)导致的,核心原因是编译环境未正确识别zbar库的路径,或者缺失对应架构的库文件。
解决步骤
- 验证zbar库安装完整性:
确认已安装与Python同架构(x64)的zbar Windows版本,库文件一般在安装目录的lib文件夹下,比如C:\Program Files\ZBar\lib,检查该目录下是否存在libzbar.a(MinGW环境)或zbar.lib(MSVC环境)。 - 编译时指定库和头文件路径:
执行编译命令时,通过-L指定zbar库路径,-I指定头文件路径,示例命令:python setup.py build_ext -L"C:\Program Files\ZBar\lib" -I"C:\Program Files\ZBar\include" --inplace - 核对库文件命名:
如果zbar库文件名不是链接器默认查找的格式,比如是zbar64.lib,可以在编译命令中把-lzbar改成-lzbar64,或者复制库文件并重命名为libzbar.a/zbar.lib。 - 确保架构一致性:
你使用的是64位Python3.8,必须搭配64位zbar库,32位与64位库无法混用,否则链接器会因架构不匹配找不到文件。
另外,之前修改cygwinccompiler.py的操作建议提前备份原文件,避免Python版本更新时覆盖修改。
内容的提问来源于stack exchange,提问作者Rony Tesler
相关产品推荐
相关产品推荐

