【发布时间】:2021-04-01 17:10:24
【问题描述】:
我正在使用 anaconda3 shell 来执行 cython 脚本,以便以后可以使用 Python 来调用我的函数。我有来自出版商的源代码,它是用 C/C++ 编写的,没有任何 C/C++ 编程经验。
因此,我想使用 cython 来包装 C/c++ 文件。我正在使用带有基于 x64 的操作系统、Visual Studio 2017 和 anaconda3 的 Windows 10 来执行我的所有 python 模块。
我的 setup.py 文件如下所示:
#setup.py
from setuptools import setup,Extension
from Cython.Build import cythonize
extensions=[Extension("IrisAO_Python", [".\\DM files\\IrisAO_Python.pyx"],
include_dirs = [".\\DM files\\"],
library_dirs = [".\\DM files\\"],
libraries=["IrisAO.Devices"])]
setup(
name = "irisao",
ext_modules = cythonize(extensions),
packages = ['DM files'],
package_dir ={'DM files':'.\\DM files'},
py_modules=['__init__','IrisAO_Python_MirrorControl']
)
我会敦促研究此问题的专家从我的 github 存储库中下载所有文件。不下载文件,问题的调试是没有用的。 :https://github.com/abani-nayak/IrisAO-for-Windows/tree/editing
接下来,我使用 anaconda3 shell 编译扩展 setup.py:
(base) C:\Users\Abani\Documents\DM setup\Final>python setup.py build_ext --inplace
但是,我收到了致命的链接错误 LNK1181。可以在这里找到错误的预览:
cl : Command line warning D9027 : source file 'Kits\10\include\10.0.17763.0\winrt -IC:\Program' ignored
cl : Command line warning D9024 : unrecognized source file type 'Files', object file assumed
cl : Command line warning D9027 : source file 'Files' ignored
cl : Command line warning D9024 : unrecognized source file type '(x86)\Windows', object file assumed
cl : Command line warning D9027 : source file '(x86)\Windows' ignored
cl : Command line warning D9027 : source file 'Kits\10\include\10.0.17763.0\cppwinrt /EHsc /TpraisePythonException.cpp /Fobuild\temp.win-amd64-3.8\Release\raisePythonException.obj' ignored
cl : Command line warning D9021 : no action performed
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO "/LIBPATH:.\DM files\" /LIBPATH:C:\Users\Abani\anaconda3\libs /LIBPATH:C:\Users\Abani\anaconda3\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\um\x64" IrisAO.Devices.lib /EXPORT:PyInit_IrisAO_Python "build\temp.win-amd64-3.8\Release\.\DM files\IrisAO_Python.obj" build\temp.win-amd64-3.8\Release\raisePythonException.obj /OUT:build\lib.win-amd64-3.8\IrisAO_Python.cp38-win_amd64.pyd "/IMPLIB:build\temp.win-amd64-3.8\Release\.\DM files\IrisAO_Python.cp38-win_amd64.lib"
LINK : fatal error LNK1181: cannot open input file 'Files.obj'
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX86\\x64\\link.exe' failed with exit status 1181
(base) C:\Users\Abani\Documents\DM setup\Final>
错误提示:无法打开输入文件“Files.obj”。我不知道为什么它说无法打开输入文件,虽然我的 'DM 文件' 文件夹中没有这样的文件 'Files.obj'。
因此,我向专家寻求必要的帮助。再次,执行 cython 脚本所需的所有文件都可以在这里找到:https://github.com/abani-nayak/IrisAO-for-Windows/tree/editing
【问题讨论】:
-
在“.\\DM 文件\\”中删除尾随 \\。它看起来好像在命令行中导致了“\”,这可能是一个问题。
-
@ead:由于我使用的是 Windows 操作系统,因此我无法将“.\\DM 文件”中的 \\ 放到 \ 中。 python中的'\'将其解释为特殊字符。但是,我找到了解决问题的方法,并在下面发布。
标签: python c++ visual-studio anaconda cython