在 Windows (VC90) 中使用 C 绑定构建 Python 包导致 LNK1181 致命错误

Posted

技术标签:

【中文标题】在 Windows (VC90) 中使用 C 绑定构建 Python 包导致 LNK1181 致命错误【英文标题】:Build Python package with C bindings in Windows (VC90) causes LNK1181 fatal error 【发布时间】:2013-08-20 05:31:25 【问题描述】:

我正在尝试构建一个绑定到 C 库 (libspotify) 的 Python 包 (pyspotify)。

我正在使用 Python 2.7.5,并且已经为一些必需的命令行工具安装了 VS2008 Express。

当我从命令提示符(具有管理员权限)调用 python setup.py build 时,我得到以下输出:

running build
running build_py
running build_ext
building 'spotify._spotify' extension

然后是其中的 18 个,包中的每个 .c 文件一个:

c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox
/MD /W3 /GS- /DNDEBUG -Isrc -Ic:\Python\Python27\include -Ic:\Python\Python27\PC
/Tcsrc\module.c /Fobuild\temp.win32-2.7\Release\src\module.obj
module.c

然后是最精彩的:

c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\link.exe /DLL /nologo
/INCREMENTAL:NO /LIBPATH:c:\Python\Python27\libs /LIBPATH:c:\Python\Python27\PCb
uild spotify.lib /EXPORT:init_spotify build\temp.win32-2.7\Release\src\module.ob
j build\temp.win32-2.7\Release\src\session.obj build\temp.win32-2.7\Release\src\
link.obj build\temp.win32-2.7\Release\src\track.obj build\temp.win32-2.7\Release
\src\album.obj build\temp.win32-2.7\Release\src\albumbrowser.obj build\temp.win3
2-2.7\Release\src\artist.obj build\temp.win32-2.7\Release\src\artistbrowser.obj
build\temp.win32-2.7\Release\src\search.obj build\temp.win32-2.7\Release\src\pla
ylist.obj build\temp.win32-2.7\Release\src\playlistcontainer.obj build\temp.win3
2-2.7\Release\src\playlistfolder.obj build\temp.win32-2.7\Release\src\image.obj
build\temp.win32-2.7\Release\src\user.obj build\temp.win32-2.7\Release\src\pyspo
tify.obj build\temp.win32-2.7\Release\src\toplistbrowser.obj /OUT:build\lib.win3
2-2.7\spotify\_spotify.pyd /IMPLIB:build\temp.win32-2.7\Release\src\_spotify.lib
 /MANIFESTFILE:build\temp.win32-2.7\Release\src\_spotify.pyd.manifest
LINK : fatal error LNK1181: cannot open input file 'spotify.lib'
error: command '"c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\link.
exe"' failed with exit status 1181

我试图搜索这个 LNK1181 错误,但所有答案似乎都是关于记住字符串周围的引号,或者在这种情况下我无法控制的 VS 中的某些设置。

【问题讨论】:

"LINK : 致命错误 LNK1181: 无法打开输入文件 'spotify.lib'" spotify.lib 在您的 LIB 路径上吗? 我不知道 spotify.lib 应该在哪里,所以不,我不这么认为。是VS生成的文件吗? 【参考方案1】:

您需要从here 下载适当版本的 libspotify,解压缩并将其放在您尝试构建的同一目录中(最简单的地方),或者告诉 VS 在哪里找到它。

【讨论】:

这看起来像是一个解决方案。我已经在那里有了 libspotify.lib 文件,但在它工作之前必须将它重命名为 spotify.lib。谢谢:)

以上是关于在 Windows (VC90) 中使用 C 绑定构建 Python 包导致 LNK1181 致命错误的主要内容,如果未能解决你的问题,请参考以下文章

找不到从属程序集 Microsoft.VC90.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18

[转]找不到从属程序集 Microsoft.VC90.DebugCRT

无法启动此程序,因为计算机中丢失msvcr90.dll。尝试重新安装该程序以解决此问题

我可以使用 VC++ 2008 创建 Dll 并在 VC++ 6 中使用它吗?

高手进,关于C语言在windows上建立多线程的问题(VC6.0上实现)

windows进程中的内存结构(好多API,而且VC最聪明)