You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下使用SWIG扩展Python时ld.exe报错找不到-lpython求助

Windows 下 SWIG 扩展 Python 链接报错解决方案

错误根因

你触发的cannot find -lpython报错有3个核心问题:

  • -l参数后只能跟库名,不能直接写Python安装路径,指定库搜索路径需要用-L参数
  • 你当前使用的64位MinGW(x86_64-w64-mingw32)和32位Python3.8架构不匹配,无法跨架构链接
  • Linux下的扩展后缀.so不适用于Windows,Python在Windows下识别的扩展后缀为.pyd

可行操作步骤

第一步:对齐架构

二选一即可:

  • 卸载当前64位MinGW,安装32位版本MinGW(i686-w64-mingw32)
  • 卸载当前32位Python3.8,安装对应64位版本Python

第二步:修正编译与链接命令

首先编译.o目标文件时,需要通过-I参数指定Python头文件目录,示例:

gcc -c hellomodule.c hello_wrap.c -I"C:\Users\LENOVO\AppData\Local\Programs\Python\Python38-32\include" -fPIC

然后执行链接命令,通过-L指定Python库目录,-l后跟对应版本的Python库名,输出后缀改为.pyd:

gcc -shared hellomodule.o hello_wrap.o -o _hello.pyd -L"C:\Users\LENOVO\AppData\Local\Programs\Python\Python38-32\libs" -lpython38

补充注意事项

  • 若Python的libs目录下只有python38.lib没有MinGW格式的libpython38.a也无需额外转换,MinGW可直接兼容链接MSVC生成的.lib文件
  • 所有包含空格的路径必须用英文双引号包裹,避免路径识别错误

内容的提问来源于stack exchange,提问作者ftkhateeb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 00:54:04