【问题标题】:mingw32/bin/ld.exe: cannot find -lpython"mingw32/bin/ld.exe: 找不到 -lpython"
【发布时间】:2021-05-27 03:36:53
【问题描述】:

请原谅我的新手。几天来,我一直在尝试用 c 扩展 python。有很多方法,但没有一个是 Windows 友好的。目前我正在尝试遵循这个 SWIG 教程(页面底部)。https://en.wikibooks.org/wiki/Python_Programming/Extending_with_C#Using_SWIG

我已经到了应该将所有内容链接到 python 的最后一步,但是当我编写命令时

 `gcc -shared hellomodule.o hello_wrap.o -o _hello.so -lpython`

我收到此错误 “c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: 不能查找 -lpython"

我试过了:

  • 将 python 添加为环境变量
  • 复制python地址到链接命令如下

gcc -shared hellomodule.o hello_wrap.o -o _hello.so -lC:\Users\LENOVO\AppData\Local\Programs\Python\Python38-32

任何帮助将不胜感激

【问题讨论】:

  • 看起来您正在 (a) 将 32 位 python 与 64 位编译器混合,并且 (b) 未正确命名您的 Python 库,C:\Users\LENOVO\AppData\Local\Programs\Python\Python38-32 是否包含任何名为 libpython.dll 或 @987654326 的文件@ 或 libpython.so?我不认为这是在 Windows 上的情况。他们通常在没有lib 前缀的情况下命名他们的库。如果是这样,您需要提供库的完整路径,而不是任何 -l 标志(查看它的作用)。
  • @n.'pronouns'm。你是对的,好像我有 32 位 python 出于某种原因。我将重新安装 64 位的。但是我应该如何命名我的“python库”?
  • 您需要提供库的完整路径
  • @n.'pronouns'm。有一个 python3.dll , python39.dll 和一个 lib 文件夹,其中包含许多其他文件夹和文件
  • @n.'pronouns'm。并且有一个dll库

标签: python gcc swig


【解决方案1】:

它正在寻找libpython.so,您在 Windows 上找不到。通常,Windows 上的 Python 扩展必须使用构建 Python 的相同编译器构建,以便运行时库匹配,而这几乎总是 Visual Studio。详情请看这里:

https://docs.python.org/3/extending/windows.html

如果您有 Python 的 Mingw 版本,那么您的方向是正确的。如果没有,那么您将需要 Visual Studio。

【讨论】:

  • 我猜 Mingw 为 python 构建的版本不适用于 64 位,我很抱歉这可能听起来很愚蠢,但我需要 Visual Studio 来做什么?,因为我已经有了(但没有使用它对于这个项目)。
  • MinGW 使用 VC 运行时。将它与 VC 混合并没有错,人们一直在这样做。 (作为 C 编译器,而不是 C++)。
猜你喜欢
  • 1970-01-01
  • 2011-07-12
  • 2021-09-25
  • 1970-01-01
  • 2017-06-04
  • 2018-05-04
  • 2021-07-13
  • 2011-06-23
  • 2023-03-20
相关资源
最近更新 更多