gpt4 book ai didi

python - 在 MinGW32 编译 pySpotify 中使用 libspotify .dll/.lib 文件

转载 作者:太空狗 更新时间:2023-10-29 17:51:07 27 4
gpt4 key购买 nike

在 Windows PC 上使用 MinGW32 我正在尝试编译 pySpotify .第一个错误是缺少 libspotify/api.h。我通过从 libspotify 复制适当的文件夹来修复这个问题进入 C:\MinGW\include。但是现在 dllwrap 现在因 ld 链接而失败。 Spotify 分发的二进制文件是 libspotify.dll libspotify.lib. 无论我把它们放在哪里 (pySpotify 文件夹/子文件夹、临时构建文件夹/子文件夹和 MinGW 文件夹/子文件夹) 或者我给它们起什么名字(.a, .o & .so)仍然显示相同的错误消息。

相关错误是:

C:\MinGW\bin\dllwrap.exe -mdll -static --output-lib build\temp.win32-2.7\Release\src\lib_spotify.a --def build\temp.win32-2.7\Release\src\_spotify.def -s build\temp.win32-2.7\Release\src\module.o build\temp.win32-2.7\Release\src\session.o build\temp.win32-2.7\Release\src\link.o build\temp.win32-2.7\Release\src\track.obuild\temp.win32-2.7\Release\src\album.o build\temp.win32-2.7\Release\src\albumbrowser.o build\temp.win32-2.7\Release\src\artist.o build\temp.win32-2.7\Release\src\artistbrowser.o build\temp.win32-2.7\Release\src\search.o build\temp.win32-2.7\Release\src\playlist.o build\temp.win32-2.7\Release\src\playlistcontainer.o build\temp.win32-2.7\Release\src\playlistfolder.o build\temp.win32-2.7\Release\src\image.o build\temp.win32-2.7\Release\src\user.o build\temp.win32-2.7\Release\src\pyspotify.o build\temp.win32-2.7\Release\src\toplistbrowser.o -LC:\Python26\libs -LC:\Python26\PCbuild -lspotify -lpython26 -lmsvcr90 -o build\lib.win32-2.7\spotify\_spotify.pyd
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: cannot find -lspotify
collect2.exe: error: ld returned 1 exit status
dllwrap: gcc exited with status 1
error: command 'dllwrap' failed with exit status 1

bok says on github那:

You need to add the API headers in the include path (add something like -I~\libspotify\include to your compiler options) and the shared library in the library path (add -L~\libspotify\lib to your linker options). This will allow the compiler to find the necessary include files, and your linker to find the necessary binary objects.

然而,distutils 扩展类似乎已被弃用并且很难找到相关文档(我相信这是自定义编译器选项需要去的地方)。请注意,~ 可能需要更改为 %USERPROFILE% 或类似内容。同样,%PYTHONPATH%\Lib\distutils\distutils.cfg[build] compiler=mingw32 节之外几乎没有文档。这使得编辑编译/链接命令及其选项无法更改。

如何在 Windows 上编译 pySpotify?

编辑:

通过使用 Python 2.6 并将 libspotify.dll/libspotify.lib 复制到 C:\Python26\PCbuild 并将它们重命名为 spotify.dll/libspotify.lib,我现在从 ld 收到另一条错误消息:

C:\MinGW\bin\dllwrap.exe -mdll -static --output-lib build\temp.win32-2.6\Release\src\lib_spotify.a --def build\temp.win32-2.6\Release\src\_spotify.def -s build\temp.win32-2.6\Release\src\module.o build\temp.win32-2.6\Release\src\session.o build\temp.win32-2.6\Release\src\link.o build\temp.win32-2.6\Release\src\track.obuild\temp.win32-2.6\Release\src\album.o build\temp.win32-2.6\Release\src\albumbrowser.o build\temp.win32-2.6\Release\src\artist.o build\temp.win32-2.6\Release\src\artistbrowser.o build\temp.win32-2.6\Release\src\search.o build\temp.win32-2.6\Release\src\playlist.o build\temp.win32-2.6\Release\src\playlistcontainer.o build\temp.win32-2.6\Release\src\playlistfolder.o build\temp.win32-2.6\Release\src\image.o build\temp.win32-2.6\Release\src\user.o build\temp.win32-2.6\Release\src\pyspotify.o build\temp.win32-2.6\Release\src\toplistbrowser.o -LC:\Python26\libs -LC:\Python26\PCbuild -lspotify -lpython26 -lmsvcr90 -o build\lib.win32-2.6\spotify\_spotify.pyd
_spotify.exp: file not recognized: File format not recognized
collect2.exe: error: ld returned 1 exit status
dllwrap: gcc exited with status 1
error: command 'dllwrap' failed with exit status 1

最佳答案

目前无法访问 mingw 安装,我可以提出一些建议。

首先,众所周知,ld 对参数的顺序很挑剔。奇怪的是,当我在谷歌上搜索“ld argument order”时,我得到了一堆提示顺序无关紧要的页面,但我已经被这个烧伤了好几次。我使用以下参数顺序取得了最大的成功:

  1. 切换到ld(即-Wall)
  2. 库搜索路径(即 -LPATH)
  3. 目标文件
  4. 库(即 -lspotify)

我注意到在您的链接器输出中有一些对 amd64 的引用。我不确定你是如何编译你拥有的其他目标文件的,但由于 libspotify 在 Windows 上是 32 位的,我猜在这里混合 32/64 位不会太好。

我最后想到的可能是 dll 扩展名与 ld 混淆,您是否尝试过将文件名更改为 libspotify.so?我知道这有点盲目尝试,但除此之外我不确定如何进一步帮助您。

关于python - 在 MinGW32 编译 pySpotify 中使用 libspotify .dll/.lib 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13867498/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com