Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
 Аватар для pito211
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612

Подключение библиотек taglib

01.06.2011, 09:48. Показов 5400. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте! Не знаю правильно ли ятему назвал. Вот короче какая у меня проблема:
Решил я воспользоваться библиотекой taglib http://developer.kde.org/~wheeler/taglib.html
в папке лежат куча спп и х файлов, наиболее интересный для меня tag.h, вот я и решил сразу его подключить к своему проекту. Закинул всю папку в папку с моим проектом, написал #include <tag.h>, но эта схема не сработала из-за того что класс Tag в нём абстрактный
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
namespace TagLib {
 
  //! A simple, generic interface to common audio meta data fields
 
  /*!
   * This is an attempt to abstract away the difference in the meta data formats
   * of various audio codecs and tagging schemes.  As such it is generally a
   * subset of what is available in the specific formats but should be suitable
   * for most applications.  This is meant to compliment the generic APIs found
   * in TagLib::AudioProperties, TagLib::File and TagLib::FileRef.
   */
 
  class TAGLIB_EXPORT Tag
  {
  public:
 
    /*!
     * Detroys this Tag instance.
     */
    virtual ~Tag();
 
    /*!
     * Returns the track name; if no track name is present in the tag
     * String::null will be returned.
     */
    virtual String title() const = 0;
 
    /*!
     * Returns the artist name; if no artist name is present in the tag
     * String::null will be returned.
     */
    virtual String artist() const = 0;
 
    /*!
     * Returns the album name; if no album name is present in the tag
     * String::null will be returned.
     */
    virtual String album() const = 0;
 
    /*!
     * Returns the track comment; if no comment is present in the tag
     * String::null will be returned.
     */
    virtual String comment() const = 0;
 
    /*!
     * Returns the genre name; if no genre is present in the tag String::null
     * will be returned.
     */
    virtual String genre() const = 0;
 
    /*!
     * Returns the year; if there is no year set, this will return 0.
     */
    virtual uint year() const = 0;
 
    /*!
     * Returns the track number; if there is no track number set, this will
     * return 0.
     */
    virtual uint track() const = 0;
 
    /*!
     * Sets the title to \a s.  If \a s is String::null then this value will be
     * cleared.
     */
    virtual void setTitle(const String &s) = 0;
 
    /*!
     * Sets the artist to \a s.  If \a s is String::null then this value will be
     * cleared.
     */
    virtual void setArtist(const String &s) = 0;
 
    /*!
     * Sets the album to \a s.  If \a s is String::null then this value will be
     * cleared.
     */
    virtual void setAlbum(const String &s) = 0;
 
    /*!
     * Sets the comment to \a s.  If \a s is String::null then this value will be
     * cleared.
     */
    virtual void setComment(const String &s) = 0;
 
    /*!
     * Sets the genre to \a s.  If \a s is String::null then this value will be
     * cleared.  For tag formats that use a fixed set of genres, the appropriate
     * value will be selected based on a string comparison.  A list of available
     * genres for those formats should be available in that type's
     * implementation.
     */
    virtual void setGenre(const String &s) = 0;
 
    /*!
     * Sets the year to \a i.  If \a s is 0 then this value will be cleared.
     */
    virtual void setYear(uint i) = 0;
 
    /*!
     * Sets the track to \a i.  If \a s is 0 then this value will be cleared.
     */
    virtual void setTrack(uint i) = 0;
 
    /*!
     * Returns true if the tag does not contain any data.  This should be
     * reimplemented in subclasses that provide more than the basic tagging
     * abilities in this class.
     */
    virtual bool isEmpty() const;
 
    /*!
     * Copies the generic data from one tag to another.
     *
     * \note This will no affect any of the lower level details of the tag.  For
     * instance if any of the tag type specific data (maybe a URL for a band) is
     * set, this will not modify or copy that.  This just copies using the API
     * in this class.
     *
     * If \a overwrite is true then the values will be unconditionally copied.
     * If false only empty values will be overwritten.
     */
    static void duplicate(const Tag *source, Tag *target, bool overwrite = true);
 
  protected:
    /*!
     * Construct a Tag.  This is protected since tags should only be instantiated
     * through subclasses.
     */
    Tag();
 
  private:
    Tag(const Tag &);
    Tag &operator=(const Tag &);
 
    class TagPrivate;
    TagPrivate *d;
  };
}
я немного погуглил и выяснил что у других людей содержимое этого файла несколько другое и у них всё нормально работает. После этого я нашёл как собрать библотеку и получил в итоге файлы .dll .lib .exp... Вопрос: что нужно сделать, чтобы воспользоваться библиотекой?

вот чё на их сайте написано:
TagLib can be built using the CMake build system.
этот этап я вроде нашёл
TagLib installs a taglib-config and pkg-config file to make it easier to integrate into various build systems. Note that TagLib's include install directory must be included in the header include path. Simply adding <taglib/tag.h> will not work.
нашёл только фаил taglib-config, чё с ним делать беспонтия, вобще это скрипт для баша, а у меня windows...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.06.2011, 09:48
Ответы с готовыми решениями:

Подключение библиотеки TagLib в QTCreator на MacOS
Доброе время форумчане! Такая проблема, решил я поставить вот эту чудную библиотеку, покурив сайт понял что самому собирать ее бред,...

Подключение библиотек
Доброго времени суток %username% !!! Изучаю С++ не очень долго и возник такой вопрос. Необходимо подключить библиотеку &lt;string&gt; в...

подключение библиотек
доброго времени суток #pragma comment(lib, &quot;GLU32.lib&quot;) как понять из какой папки программа будет брать данную библиотеки, тоесть из...

8
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.06.2011, 10:02
pito211, А чем пользуешься то хоть?
1
 Аватар для pito211
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
01.06.2011, 10:24  [ТС]
ну лучше всего мне подходит qt creator но ещё есть vs2008 и 2010. cmake наштомповал кучу vs файликов в каталоге taglib, я недолго думая открыл .sln фаил vs 2010. Поставил Release и нажал ф5. в итоге у меня и появились taglib.dll .lib .exp. Но tag.h остался прежним... Я искал в гугле, но ни у кого таких проблем не возникало, а я раньше не чем таким не поьзовался, поэтому не знаю, может есть какие-нибудь особенности, как эти библиотеки сторонние собирать?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.06.2011, 11:05
pito211, Судя по объявлению private они используют непрозрачный указатель. Вообще .lib файлы, которые нужны надо добавить в каталог либ в MSVS в настройках проекта... Но лучше почитать документацию по установке как следует.

Добавлено через 3 минуты
Note that TagLib's include install directory must be included in the header include path. Simply adding <taglib/tag.h> will not work.
А вы вообще просто подключаете tag.h... Как-то странно. В MSVS в настройках стоит добавить путь к TagLib инклудам и тогда уже вперед.
1
 Аватар для pito211
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
01.06.2011, 11:15  [ТС]
на их сайте по поводу установки сказано два слова, нашёл инструкции в инете, там тоже описано как сделать .dll .lib и всё... И дальше написано, что можно пользоваться tag.h, но у меня он ничего не позволяет создавать, так как tag абстрактный класс... ладно я наверно воспользуюсь id3lib, там хоть меннее понятный интерфейс, но зато программы компилируются, тема больше не актуальна

Добавлено через 4 минуты
Цитата Сообщение от ForEveR Посмотреть сообщение
А вы вообще просто подключаете tag.h... Как-то странно. В MSVS в настройках стоит добавить путь к TagLib инклудам и тогда уже вперед.
сначала я папку taglib всю копировал в папку с проектом и подключал через кавычки #include "", а потом копировал эту папку в директорию с mingw и подключал через <>, он видил библиотеку, открывал даже tag.h, а в vs я не знаю как добавлять, да и смысла добавлять такой tag.h нету(
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.06.2011, 12:22
Ну как хотите... а я разобрался минут за 30 на линуксе...
Итого такой код работает.

C++
1
2
3
4
5
6
7
8
9
#include <taglib/tag.h>
#include <taglib/fileref.h>
#include <iostream>
 
int main()
{
    TagLib::FileRef f("some_m_f.mp3");
    std::cout << f.tag()->artist() << '\n';
}
1
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
01.06.2011, 13:34

Не по теме:

Цитата Сообщение от ForEveR Посмотреть сообщение
на линуксе...
тоже мне сравнил :D я вот OpenSSL под "окошки" собрать не могу уже неделю, а в *nix то любой дурак сможет


Цитата Сообщение от pito211 Посмотреть сообщение
сначала я папку taglib всю копировал в папку с проектом и подключал через кавычки #include ""
Так не делают. Тут собственно есть два выхода. Первый - это положить все в дефолтные каталоги Visual Studio, заголовки к заголовкам, либы к либа. Дефолтные каталоги находятся примерно по таким путям:
Code
1
2
C:\Program Files\Microsoft Visual Studio 10.0\VC\include
C:\Program Files\Microsoft Visual Studio 10.0\VC\lib
Соответственно в первую ложить заголовки, во вторую либы.
Второй способ положить все в отдельный каталог и указать этот каталог в опциях проекта. Смысл будет одинаковый. Вопрос только в том, что в первом случае библиотечка будет видна для всех проектов, а во втором - только для конкретного.
1
 Аватар для pito211
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
01.06.2011, 14:09  [ТС]
Цитата Сообщение от fasked Посмотреть сообщение
Так не делают. Тут собственно есть два выхода. Первый - это положить все в дефолтные каталоги Visual Studio, заголовки к заголовкам, либы к либа. Дефолтные каталоги находятся примерно по таким путям:
спасибо, но я VS не пользуюсь. После долгого курения мануала я вроде бы начал понимать. Я так понял, что надо пользоваться fileRef и примеры там все вокруг него построены, а не вокруг класса Tag. Правда сейчас он стал выдавать C:/Tag/taglib-1.7/taglib-build-desktop/../taglib/mpeg/id3v2/id3v2framefactory.cpp:68: ошибка: definition of static data member 'TagLib::ID3v2::FrameFactory::factory' of dllimport'd class но это вроде надо чё то в .pro ковырнуть, видал я это в каком то гайде по установке. Надеюсь я на правильном пути
0
0 / 0 / 0
Регистрация: 28.11.2019
Сообщений: 1
28.11.2019, 21:54
Подарочный Сертификат ivi ru 900 руб - 450 руб
Сертификат Киноход 500 руб - 300 руб
Подарочный Сертификат Delivery Club 120 руб - 40 руб
Сертификат PARTER RU 500 руб - 300 руб


Телеграмм @CouponMen
https://coupon-man.exaccess.com/
тоже
https://www.plati.market/asp/seller.asp?ids=862261
PS. Если создал тему не там где нуждаться, перенесите пожайлусто.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.11.2019, 21:54
Помогаю со студенческими работами здесь

Подключение библиотек
Здравствуйте. Подскажите пожалуйста почему при попытке подключить к программе библиотеки &lt;stdlib.h&gt; и &lt;conio.h&gt; выдаётся ошибка...

Подключение библиотек
Здравствуйте! Проблема: не могу подключить новые библиотеки! Имею VS 2010 Ultimate ! кликаю: сервис-&gt;параметры-&gt;проекты и...

Подключение библиотек
Здравствуйте ув. форумчане.Я пишу программы c++ на notepad++.Возможно ли добавить библиотеки такие как sfml,opengl,и т.д ?Про visual studio...

Подключение библиотек
Для интереса решил попробовать поиграть со звуком. Скачал библиотеку. Установил по инструкции (Скину ссылку если нужно) Выдает ld...

Подключение библиотек
c:\documents and settings\admin\рабочий стол\compressed_matrix\compressed_matrix\main.cpp(4) : fatal error C1083: Не удается открыть файл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru