編集:はい、私はこの投稿を見ました。残念ながら、ユーザーは最終的にMingWを使用することになります。
私はWindows7、64ビットを使用しています。最新バージョンのTagLibコードをSVNリポジトリからダウンロードしました。リビジョン1202935を使用しています。
VisualStudio2010でTagLibを使用しようとしています。TagLibをQtCreator/MingWで動作させるようになりましたが、Windows APIの学習を開始したいので、Visual Studio 2010(もちろんC ++)で最初から始めています。
VS2010では、zlib(静的および動的の両方)と、zlibを使用する場合と使用しない場合(静的および動的の両方)のTagLibをビルドしました。言い換えれば、私はこれを機能させるために私が考えることができるすべてを試みました。
私の理想的な状況は、CMakeを使用してTagLibのVS2010プロジェクトファイル(VS2010 64ビット用のオプションがあります。このオプションは選択しません)を生成することです。それらを静的ライブラリにしたいので、ENABLE_STATICを有効にし、WITH_ASFとWITH_MP4を有効にします。また、ZLIB_INCLUDE_DIRとZLIB_LIBRARYを使用してTagLibをzlibに転送します(以前にVS2010を使用して作成したzlib.libファイルにリンクしています)。注意してください、私はCMakeGUIを使用しています。
次に、生成されたプロジェクトファイルをVS2010で開き、コードに3つの変更を加えて、エラーなしでVisual Studio 2010でビルドできるようにします(私と同じ問題を抱えている他の人のために、ここに修正を加えました)。
192行目のapefooter.cpp :
std::bitset<32> flags(static_cast<unsigned long long>(data.mid(20, 4).toUInt(false)));
116行目のmpcproperties.cpp:
std::bitset<32> flags = static_cast<unsigned long long>(d->data.mid(8, 4).toUInt(false));
171行目のmpegheader.cpp
std::bitset<32> flags(static_cast<unsigned long long>(data.toUInt()));
次に、mpegfile.cppの436行目と437行目をコメントアウトします。これは、バグだと思うからです。
// ID3v2Tag(true);
// ID3v1Tag(true);
次に、プロジェクトをリリースモードでビルドします。それはうまく構築されます。エラーはありません(ただし、警告がたくさんあります)。
そこで、tag.libを生成しました。次に、TagLibを使用するためのテストVS2010プロジェクト/ソリューションを作成しました。
これは私がTagLibを使用する唯一の行です。ただのテストです。
TagLib::MPEG::File a("tests/other/blank.mp3");
TAGLIB_STATIC
すべての構成(リリースビルドとデバッグビルドの両方)のプリプロセッサオプション([プロパティページ]>[構成プロパティ]>[C / C ++]>[プリプロセッサ]>[プリプロセッサ定義])に追加しました- すべてのdarnヘッダーディレクトリを[プロパティページ]>[構成プロパティ]>[C/C++]>[一般]>[追加のインクルードディレクトリ]に追加しました
- そして最後に、zlib.libとtag.libを追加の依存関係([プロパティページ]>[構成プロパティ]>[リンカー]>[入力]>[追加の依存関係])にこの順序で追加しました
「ふぅ!なんて面倒なんだ!それがうまくいくか見てみようか?」
1>vs_taglib_test.obj : error LNK2028: unresolved token (0A00001A) "public: virtual __clrcall TagLib::MPEG::File::~File(void)" (??1File@MPEG@TagLib@@$$FUAM@XZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
1>vs_taglib_test.obj : error LNK2028: unresolved token (0A00001B) "public: __clrcall TagLib::MPEG::File::File(class TagLib::FileName,bool,enum TagLib::AudioProperties::ReadStyle)" (??0File@MPEG@TagLib@@$$FQAM@VFileName@2@_NW4ReadStyle@AudioProperties@2@@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
1>vs_taglib_test.obj : error LNK2019: unresolved external symbol "public: virtual __clrcall TagLib::MPEG::File::~File(void)" (??1File@MPEG@TagLib@@$$FUAM@XZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
1>vs_taglib_test.obj : error LNK2019: unresolved external symbol "public: __clrcall TagLib::MPEG::File::File(class TagLib::FileName,bool,enum TagLib::AudioProperties::ReadStyle)" (??0File@MPEG@TagLib@@$$FQAM@VFileName@2@_NW4ReadStyle@AudioProperties@2@@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
他の誰かが私がここでしていることを試して、私の間違いを指摘することはできますか?私は、何が起こっているのかを知るために、すべての人に十分な情報を提供しようとしました。
読んでくれてありがとう!