尝试使用 setuptools 安装 python 绑定时如何解决链接器错误?

How to resolve linker errors when trying to install python bindings with setuptools?

提问人:Bamboozlement 提问时间:7/4/2023 最后编辑:Bamboozlement 更新时间:7/6/2023 访问量:43

问:

我目前正在尝试在 Rust (https://github.com/bet4it/udbserver) 中为项目构建安装 python 绑定。构建项目本身工作正常,我得到一个 .dll、.h 和 .lib 文件。由于我在 Windows 上,我不能将它们分别放入 usr\bin - usr\include - usr\lib 中,而是将 .lib 和 .h 文件的路径包含在 include 和 library 目录中,这些目录可以在 python setuptools 中指定,项目使用它来生成 python 绑定。当我尝试执行安装程序python文件时,我收到如下所示的链接器错误:

"udbserver.obj : error LNK2001: unresolved external symbol __imp__PyObject_GetAttr

udbserver.obj : error LNK2001: unresolved external symbol __imp__Py_NoneStruct

udbserver.obj : error LNK2001: unresolved external symbol __imp__Py_Initialize

udbserver.obj : error LNK2001: unresolved external symbol __imp__PyModule_Create2

udbserver.obj : error LNK2001: unresolved external symbol _udbserver

udbserver.obj : error LNK2001: unresolved external symbol __imp__PyLong_AsVoidPtr

udbserver.obj : error LNK2001: unresolved external symbol __imp__PyUnicode_FromString

udbserver.obj : error LNK2001: unresolved external symbol __imp__PyArg_ParseTuple

build\lib.win32-cpython-311\udbserver.cp311-win_amd64.pyd : fatal error LNK1120: 8 unresolved externals"

我以为库和包含目录中可能缺少 Python include 和 library 文件,但在执行设置时,它显示 python\lib 和 python 文件夹包含在库路径中,python\include 和 python\Include 包含在包含路径中。所以我有点困惑为什么会发生这种情况。

我还有什么其他选择?尝试自己创建绑定?

编辑:通过使用 32 位 Python,我能够消除所有链接器错误,但只有一个错误。这就是提到的未解决的外部“_udbserver”。仍然不确定这个。

python 链接器 linker-errors setuptools python-bindings

评论


答: 暂无答案