Utilizzo di MinGW32
su un PC Windows Sto tentando di compilare pySpotify. Il primo errore era che mancava libspotify/api.h
. I risolto copiando la cartella appropriata da libspotify in C:\MinGW\include
. Comunque ora dllwrap
è ora fallendo con ld linking.
I binari Spotify
distribuiscono sono libspotify.dll
e libspotify.lib.
Non importa dove li ho messi (cartella pySpotify/sottocartelle della cartella di compilazione temp/sottocartelle e MinGW cartella/sottocartelle) o quello che io li nomino (.a , .o & .so) it mostra ancora gli stessi messaggi di errore.Uso dei file libspotify .dll/.lib nella compilazione MinGW32 pySpotify
L'errore pertinente è:
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 che:
è necessario aggiungere le intestazioni API nel percorso di includere (aggiungere qualcosa di simile -I ~ \ libspotify \ include al vostro opzioni del compilatore) e la libreria condivisa nel percorso della libreria (aggiungi -L ~ \ libspotify \ lib alle opzioni del linker). Ciò consentirà al compilatore di trovare i file di inclusione necessari e il linker per trovare gli oggetti binari necessari.
Tuttavia la classe Extension distutils
sembra essere deprecato e difficile da trovare la documentazione relativa (credo che questo è dove le opzioni di compilazione personalizzati bisogno di andare). Apprezzare che ~
potrebbe essere necessario modificare su %USERPROFILE%
o simile. Allo stesso modo %PYTHONPATH%\Lib\distutils\distutils.cfg
ha poca documentazione oltre la stanza [build]
compiler=mingw32
. Ciò rende impossibile modificare i comandi di compilazione/collegamento e le loro opzioni.
Come si compila pySpotify su Windows?
EDIT:
Utilizzando Python 2.6 e la copia libspotify.dll/libspotify.lib a C: \ Python26 \ PCbuild e rinominare loro di spotify.dll/libspotify.lib io ora ricevo un altro messaggio di errore da 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
Forse il percorso assoluto non viene letto correttamente da ld di MinGW? Cioè, prova a spostare libspotify in una posizione relativa e vedi se questo non aiuta. –
Ciao Nik, grazie per il suggerimento - ma ho provato a copiare su ogni cartella/sottocartella che posso trovare senza alcun risultato: "Non importa dove li metto (cartella/sottocartelle pySpotify, cartella/sottocartelle di creazione temporanea e cartella/sottocartelle MinGW)." – Metalshark