尝试使用 Cython 但链接器因错误退出

问题描述 投票:0回答:1

setup.py

from setuptools import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize('picmanager.pyx', language_level=311))

输出:

(venv) D:\pythonProject2> python setup.py build
running build
running build_ext......
  Creating library build\temp.win-amd64-cpython-311\Release\picmanager.cp311-win_amd64.lib and object build\temp.win-amd64-cpython-311\Release\picmanager.cp311-win_amd64.exp
MSVCRT.lib(dll_dllmain.obj) : error LNK2001: external symbols that cannot be resolved _initterm......(Omit the remaining 28)
build\lib.win-amd64-cpython-311\picmanager.cp311-win_amd64.pyd : fatal error LNK1120: 29 external commands that cannot be parsed
error: command 'D:\Program Files (x86)\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe' failed with exit code 1120

但是,

initterm.cpp
已经在
C:\Program Files (x86)\Windows Kits\10\Source\10.0.22621.0\ucrt\startup

我尝试修改环境变量,如

INCLUDE
LIB
PATH
TMP
,但没有帮助。

如何解决这个问题?

我希望程序能够正常运行并且最后能够导入相应的模块

现在我有了新的进展,我添加了环境变量

CRT=D:\Program Files (x86)\BuildTools\VC\Tools\MSVC\14.37.32822\crt\src\vcruntime;
C:\Program Files (x86)\Windows Kits\10\Source\10.0.22621.0\ucrt\startup;

现在终端变成了

MSVCRT.lib(utility.obj) : error LNK2001: external symbol _configure_narrow_argv that cannot be resolved
MSVCRT.lib(utility.obj) : error LNK2001: external symbol _initialize_narrow_environment that cannot be resolved
build\lib.win-amd64-cpython-311\picmanager.cp311-win_amd64.pyd : fatal error LNK1120:  2 external commands that can't be resolved

很好,但是 _configure_narrow_argv 是一个找不到的文件名

所以现在我只需要找到这个文件。

我在 C:\Program Files (x86)\Windows Kits \Source .0.22621.0\ucrt\startup rgv_parsing.cpp 中找到它

extern "C" errno_t __cdecl _configure_narrow_argv(_crt_argv_mode const mode)
{
    return common_configure_argv<char>(mode);
}

但是为什么会报错

想了想,我觉得版本可能不兼容? 你有什么建议吗?

我删除了argv_parsing.cpp,但问题仍然存在。看来不是这个文件的问题

这个问题已经自己摸索解决了,稍后整理一下

python cython vcbuild
1个回答
0
投票

添加cl.exe,link.exe,rc.exe的路径到PATH通常cl与link在同一个文件夹里

路径=

D:\Program Files (x86)\BuildTools\VC\Tools\MSVC .37.32822 in\Hostx64\x64;

C:\Program Files (x86)\Windows Kits in .0.22621.0\x64;

新建INCLUDE,找到报错信息中需要的.h文件所在路径并填入

包括=

C:\Program Files (x86)\Windows Kits\Include .0.22621.0\um;

C:\ Program Files(x86)\ Windows Kits \包括.0.22621.0 \共享;

D:\pythonProject2 env\Lib\site-packages 尤姆普

© www.soinside.com 2019 - 2024. All rights reserved.