EDIT: Oui, j'ai regardé this post. Malheureusement, il semble que l'utilisateur finisse par utiliser MingW à la fin.L'utilisation de TagLib dans Visual Studio 2010
Je suis sur Windows 7, 64 bits. J'ai téléchargé la version la plus récente du code TagLib depuis le dépôt SVN. J'utilise la révision . J'essaie d'utiliser TagLib dans Visual Studio 2010. J'ai demandé à TagLib de travailler avec QtCreator/MingW, mais je veux commencer à apprendre l'API Windows, donc je pars de zéro dans Visual Studio 2010 (C++ bien sûr).
Dans VS2010, j'ai construit zlib (à la fois statiquement et dynamiquement) et TagLib avec et sans zlib (statiquement et dynamiquement). En d'autres termes, j'ai essayé tout ce que je pouvais imaginer pour que cela fonctionne.
Ma situation idéale est que j'utilise CMake pour générer les fichiers de projet VS2010 (il y a une option pour VS2010 64 bits. I ne pas choisissez cette option) pour TagLib. Je voudrais qu'ils soient des bibliothèques statiques, donc j'active ENABLE_STATIC, et j'active les WITH_ASF, et WITH_MP4. Je dirige aussi TagLib vers zlib en utilisant ZLIB_INCLUDE_DIR et ZLIB_LIBRARY (je lie au fichier zlib.lib que j'ai précédemment construit en utilisant VS2010). Remarque, j'utilise l'interface graphique CMake. Je puis ouvrir les fichiers de projet générés dans VS2010 et apporter trois modifications au code afin qu'il construit dans Visual Studio 2010 sans erreur (J'ai mis les correctifs ici pour quelqu'un d'autre qui a eu le même problème que je) .
apefooter.cpp sur la ligne 192:
std::bitset<32> flags(static_cast<unsigned long long>(data.mid(20, 4).toUInt(false)));
mpcproperties.cpp sur la ligne 116:
std::bitset<32> flags = static_cast<unsigned long long>(d->data.mid(8, 4).toUInt(false));
mpegheader.cpp sur la ligne 171:
std::bitset<32> flags(static_cast<unsigned long long>(data.toUInt()));
Je puis faire alors commenter les lignes 436 et 437 dans mpegfile.cpp, parce que I think it's a bug.
// ID3v2Tag(true);
// ID3v1Tag(true);
Ensuite, je compile le projet en mode Release. Ça va très bien. Pas d'erreurs (bien qu'il y ait un tas d'avertissements). J'ai donc généré tag.lib. J'ai ensuite créé un projet/solution de test VS2010 pour utiliser TagLib.
Ceci est la seule ligne que j'utilise TagLib. Juste un test, attention à toi.
TagLib::MPEG::File a("tests/other/blank.mp3");
- J'ajouté
TAGLIB_STATIC
aux options de préprocesseur (Pages de propriétés> Propriétés de configuration> C/C++> préprocesseur> préprocesseur Définitions) pour toutes les configurations (à la fois des rejets et debug) - J'ai ajouté tous les répertoire d'en-tête darn unique à Pages de propriétés> Propriétés de configuration> C/C++> Général> Additional Include Directories
- Enfin, j'ai ajouté zlib.lib et tag.lib aux dépendances supplémentaires (Pages de propriétés> Propriétés> Configuration> Entrée Linker> Dépendances supplémentaires) dans cet ordre
« ouf! Quelle tracas! Maintenant, nous allons voir si cela fonctionne? »
1>vs_taglib_test.obj : error LNK2028: unresolved token (0A00001A) "public: virtual __clrcall TagLib::MPEG::File::~File(void)" ([email protected]@[email protected]@[email protected]) referenced in function "int __clrcall main(cli::array<class System::String^>^)" ([email protected]@[email protected]@@@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)" ([email protected]@[email protected]@[email protected]@[email protected][email protected]@[email protected]@Z) referenced in function "int __clrcall main(cli::array<class System::String^>^)" ([email protected]@[email protected]@@@Z)
1>vs_taglib_test.obj : error LNK2019: unresolved external symbol "public: virtual __clrcall TagLib::MPEG::File::~File(void)" ([email protected]@[email protected]@[email protected]) referenced in function "int __clrcall main(cli::array<class System::String^>^)" ([email protected]@[email protected]@@@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)" ([email protected]@[email protected]@[email protected]@[email protected][email protected]@[email protected]@Z) referenced in function "int __clrcall main(cli::array<class System::String^>^)" ([email protected]@[email protected]@@@Z)
Une autre personne peut essayer ce que je fais ici et signaler mon erreur? J'ai essayé de fournir suffisamment d'informations pour vous tous de voir ce qui se passe.
Merci pour la lecture!
https://github.com/RJ/playdar-core/wiki/Building-on-Windows – HyperCas