6

QtプロジェクトでTagLib1.6.3をコンパイルして使用するのに非常に苦労しています。私は考えられるすべてを試しました。TagLibは、CMakeでサポートされていると主張していますが、運が悪いです。さらに、Qtライブラリに必要なファイルの種類についても混乱しています。

* .aファイル、*。lib、および*.dllを作成しました。これまでのところ理解していることから...私はWindowsで作業しているので、*。libが欲しいと思っています。私が何をしようとも、Qtプロジェクトをコンパイルしようとすると、使用しようとするTagLib関数への「未定義の参照」が常に発生します。MinGW32、MSYS、Visual Studio 2008、さらにはLinux上のWindows用のクロスコンパイルも試しました。すべて何も現れません。

私にとってさらに意味がないのは、MacでQtを使用して同じTagLibソースをコンパイルした場合(g ++だと思いますか?)、正常に動作することです。私のWindowsコンパイル手順のどこかで、私は間違っている必要があります。私はこれを理解しようとして、おそらく約30時間(オンとオフ)机の上で顔を叩き続けてきました。

QtはminGWを使用するので、同じコンパイラでTagLibをコンパイルする必要がありますか?

*.libをVisualStudioでコンパイルした場合、互換性はありませんか?

* .aライブラリはWindowsでも使用できますか?(minGWを想定)

私はまだこのC++のものを理解しようとしていますが、無数のフォーラムスレッドやその他の質問を読んだ後、まだ不足しています。これが私が現在CMakeで取り組んでいるものです...

cmake -G "MinGW Makefiles" -DENABLE_STATIC=ON -DHAVE_ZLIB=0 -DWITH_MP4=1 -DMAKE_TAGLIB_LIB=1
cmake --build ./

これにより、サイズが最大2MBの単一の*.aファイルが生成されます。Macで動作するライブラリは最大3MBで、リリースモードではVisualStudioの*.libは最大4MBでした。私は私のウィットエンドにいるので、誰かがこのC++クロスプラットフォームコマンドラインの狂気から私を救ってください。たぶん、%!$#&ingライブラリをコンパイルするだけでもお金を払うでしょう。ありがとう。

4

3 に答える 3

3

Macはあなたのために働くので、私はWin32について話しているだけです。

わかりました。これは私のTaglib.proと私のproject.proの抜粋です:https ://gist.github.com/449ea81ce92f52399f41 。それらをチェックしてください。私のTaglibは少し古くなっている可能性があるので、注意してください。いくつかのファイルが欠落している可能性があります。また、相対パスにも注意してください。これらはすべて.proファイルに関連しています。

cmake .taglibディレクトリ内を実行しました。これにより、config.htaglib_config.h

間違いなく必要なのは、libTaglib.aQtCreatorとmingw-gccを使用する場合だけです。* .libはMSVC固有です!

于 2010-10-07T09:35:45.273 に答える
2

この ブログ投稿では、このスレッドで説明されているプロセス全体について詳しく説明しています。

ブログ投稿者のJoelは、Windows用にコンパイルされたtaglib3.6.3のバイナリを提供するのに十分親切でした。

于 2011-05-05T17:41:49.023 に答える
1

プロジェクトにcmakeを使用しています。これは、taglibを使用して作成したメディアプレーヤー用のcmakeファイルです。taglibを/usr/ local /にインストールしました(このようにして、Linuxでコンパイルするときに何も変更する必要はありません)。重要な部分には矢印があります。

project(qtmu3)
find_package(Qt4 REQUIRED)
-> find_library(TAGLIB_LIB tag PATH /usr/local/lib/)
set(QT_USE_PHONON TRUE)
set(QTMU_SRCS main.cpp mainwindow.cpp WidgetMarqueeLabel.cpp single_application.cpp)
set(QTMU_MOC_HDRS mainwindow.h WidgetMarqueeLabel.h single_application.h)
set(QTMU_UI_FILES mainwindow.ui)
set(QTMU_RSRC_FILES myresources.qrc)
-> include_directories(/usr/local/include/taglib/)
set(CMAKE_CXX_FLAGS "-mwindows")
include(${QT_USE_FILE})
QT4_WRAP_UI( QTMU_UI_HDRS ${QTMU_UI_FILES})
QT4_WRAP_CPP( QTMU_MOC_SRCS ${QTMU_MOC_HDRS})
QT4_ADD_RESOURCES(QTMU_RSRC_SRCS ${QTMU_RSRC_FILES})
INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR} )
ADD_EXECUTABLE(qtmu3 ${QTMU_SRCS} ${QTMU_MOC_SRCS} ${QTMU_RSRC_SRCS} ${QTMU_UI_HDRS})
-> TARGET_LINK_LIBRARIES(qtmu3 ${QT_LIBRARIES} ${TAGLIB_LIB}) 

最後の1つは、${TAGLIB_LIB}だけが重要です。それが誰かを助けることを願っています。

于 2012-08-17T16:11:20.797 に答える