Используя MinGW32
на ПК с Windows, я пытаюсь скомпилировать pySpotify. Первая ошибка заключалась в отсутствии libspotify/api.h
. Я исправил это, скопировав соответствующую папку из libspotify в C:\MinGW\include
. Однако теперь dllwrap
теперь терпит неудачу с ld linking.
Распространение двоичных файлов Spotify
- это libspotify.dll
и libspotify.lib.
Независимо от того, где я их помещаю (папка/подпапки pySpotify, папка/подпапки temp build и папка/подкаталоги 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 говорит о github, что:
Вам нужно добавить заголовки API в путь include (добавьте что-то вроде -I ~\libspotify\include к вашим параметрам компилятора) и общую библиотеку в пути библиотеки (add -L ~\libspotify\lib к вашему компоновщику опции). Это позволит компилятору найти необходимые файлы include и ваш компоновщик для поиска необходимых двоичных объектов.
Однако класс distutils
Extension кажется устаревшим и трудно найти документацию (я полагаю, что это нужно, когда нужно настраивать параметры компилятора). Цените, что ~
может потребоваться изменить на %USERPROFILE%
или аналогичный. Аналогично, %PYTHONPATH%\Lib\distutils\distutils.cfg
имеет небольшую документацию за строкой [build]
compiler=mingw32
. Это позволяет редактировать команды компиляции/ссылки, а их параметры невозможно изменить.
Как вы компилируете pySpotify в Windows?
EDIT:
Используя 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