QT + Taglib 1.9.1 = Fail



  • Проблема такая:

    Скачал либу с сайта. Пару дней мучился, но собрал ее в нормальную либу (.Dll и .a). после день мучился, чтобы подключить к проекту. Подключил. Написал код, компилирю - Приложение неожиданно завершилось.
    И так постоянно. Путем комментирования строк, понял, что приложение "неожиданно завершается" из-за строчки TagLib::FileRef f("C:/123.mp3");
    После попробовал пересобрать библиотеку с помощью QT, результат такой же. пробовал более поздние версии либы, результат такой же. Переустановил систему (прошлая была сильно забита, много ошибок в реестре, думал, из-за этого) - не помогло. Переустановил фреймворски, в итоге у меня стоят версии 1.0, 1.1, 2.0, 3.0, 3.5, 4.0. Не помогло. Ставил "Microsoft Visual C++ 2008 Redistributable.exe". Не помогло.

    решил подойти к проблеме с другой стороны и написать простой код без QT, на чистом C++, так сказать. Результат не изменился. НО... если в конце дописать system("PAUSE"); то приложение срабатывает, выводит все на экран, а после его закрытия QT снова пишет "Приложение неожиданно завершилось".

    Далее.. если добавить в код что-либо из qt, то приложение перестает запускаться. Например, я добавил объявление строки QString str; Я не работал с ней никак, не использовал вообще, но приложение уже не запускалось и сразу неожиданно завершалось.

    Ребят помогите, прошу! В чем же проблема? В интернете видел, как эту либо используют с QT, почему у меня не получается?

    КОД:
    @#include <tag.h>
    #include <fileref.h>
    #include <iostream>

    using namespace std;
    int main()
    {
    TagLib::FileRef f("C:/123.mp3");
    // QString str //без этой строки работает, с ней нет.
    cout << "-- TAG (basic) --" << endl;
    cout << "title - "" << f.tag()->title() << """ << endl;
    cout << "artist - "" << f.tag()->artist() << """ << endl;
    cout << "album - "" << f.tag()->album() << """ << endl;
    cout << "year - "" << f.tag()->year() << """ << endl;
    cout << "comment - "" << f.tag()->comment() << """ << endl;
    cout << "track - "" << f.tag()->track() << """ << endl;
    cout << "genre - "" << f.tag()->genre() << """ << endl;
    system("PAUSE");
    }@

    .pro
    @TEMPLATE = app
    CONFIG += console

    DEFINES += TAGLIB_NO_CONFIG

    INCLUDEPATH += C:/taglib-release/taglib
    LIBS += C:/taglib-release/libtaglib.a

    SOURCES +=
    main.cpp
    @



  • Решение проще, чем может показаться...
    При запуске приложения QT не может найти библиотеку taglib.dll, несмотря на то, что в .pro прописан путь. Положил эту dll в папку с exe и все сразу стало ок.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.