12

MinGW32Windows PCで使用して、 pySpotifyをコンパイルしようとしています。最初のエラーは、それlibspotify/api.hが見つからないことでした。適切なフォルダーをlibspotifyから にコピーして、これを修正しました。ただし、現在、バイナリ配布は失敗しており、それらをどこに配置しても(pySpotify フォルダー/サブフォルダー、一時ビルド フォルダー/サブフォルダー、および MinGW フォルダー/サブフォルダー)、または名前(.a、.o、および .so)に関係なく、それそれでも同じエラーメッセージが表示されます。C:\MinGW\includedllwrapld linking.Spotifylibspotify.dlllibspotify.lib.

関連するエラーは次のとおりです。

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 ヘッダーを追加し (コンパイラ オプションに -I~\libspotify\include のようなものを追加します)、ライブラリ パスに共有ライブラリを追加する必要があります (リンカー オプションに -L~\libspotify\lib を追加します)。これにより、コンパイラは必要なインクルード ファイルを見つけ、リンカーは必要なバイナリ オブジェクトを見つけることができます。

ただし、distutilsExtension クラスは非推奨であり、ドキュメントを見つけるのが難しいようです (これは、カスタム コンパイラ オプションが必要な場所だと思います)。または類似のもの~に変更する必要があるかもしれないことに感謝します。%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
4

3 に答える 3

1

64ビットバージョンのpyspotifyを32ビットバージョンのlibspotifyにリンクしようとしていると思います。CFLAGSとCXXFLAGSに-m32を追加してpyspotifyを再構築してみてください

于 2012-12-18T15:46:19.490 に答える
1

現時点ではmingwのインストールにアクセスできないので、いくつか提案できます。

まず、ld引数の順序にうるさいことが知られています。不思議なことに、「ld 引数の順序」をググると、順序は関係ないと示唆するページがたくさん表示されましたが、これで何度かやけどを負いました。次の引数の順序で最も成功しました。

  1. ld(つまり、-Wall)に切り替えます
  2. ライブラリ検索パス (つまり、-LPATH)
  3. オブジェクトファイル
  4. ライブラリ (つまり、-lspotify)

リンカの出力に amd64 への参照があることに気付きました。あなたが持っている他のオブジェクト ファイルをどのようにコンパイルしたかはわかりませんが、libspotify は Windows では 32 ビットであるため、ここで 32 ビットと 64 ビットを混在させてもうまくいかないと思います。

私が最後に思いつくのは、おそらく dll 拡張子が を混乱させているということです。ldファイル名を. libspotify.soこれは暗闇の中でのショットのようなものであることは承知していますが、それ以外の場合は、さらにサポートする方法がわかりません.

于 2012-12-17T14:39:36.580 に答える
0

問題の実際のチケットでコンパイルする方法について、いくつかの指示を追加しました。それがあなたを助けたかどうか私に知らせてください!

https://github.com/mopidy/pyspotify/issues/63

于 2014-01-28T11:02:07.110 に答える