当前位置: 首页 > wzjs >正文

丽水手机网站建设江苏省建设厅网站职称评审系统

丽水手机网站建设,江苏省建设厅网站职称评审系统,网站导航设计模板源码,h5制作软件下载文章目录 0. 前言和环境介绍1. 下载TagLib2. 下载zlib3. 修改.pro文件4. 测试代码 0. 前言和环境介绍 最近在使用Qt写一个播放器,需要解析mp3文件,于是研究了一下如何导入TagLib库 Qt构建套件:Desktop Qt6.8.2 MinGW64-bit Qt Creator安装目录: D:\bit…

文章目录

  • 0. 前言和环境介绍
  • 1. 下载`TagLib`
  • 2. 下载`zlib`
  • 3. 修改`.pro`文件
  • 4. 测试代码

0. 前言和环境介绍

最近在使用Qt写一个播放器,需要解析mp3文件,于是研究了一下如何导入TagLib

Qt构建套件:Desktop Qt6.8.2 MinGW64-bit
Qt Creator安装目录: D:\bit\QT\QtCreator
电脑版本: Windows11
CMake版本:cmake version 3.31.3

1. 下载TagLib

首先去taglib/taglib: TagLib Audio Meta-Data Library下载TagLib的压缩包,写此文章时TagLib已经更新到了2.0.2版本
image-20250320163409146

建一个build文件夹,进入该文件夹,输入如下的bash内容(不要输入注释),注意要给cmd管理员权限,而且各种mingw的各种编译器需要更改为你自己的Qt安装目录下的工具

# 指定使用mingw的编译器(防止使用MSVC),BUILD_SHARED_LIBS=OFF,确保CMake不生成动态库相关的导出符号。
cmake -G "MinGW Makefiles" -DCMAKE_C_COMPILER="D:/bit/QT/QtCreator/Tools/mingw1310_64/bin/gcc.exe" -DCMAKE_CXX_COMPILER="D:/bit/QT/QtCreator/Tools/mingw1310_64/bin/g++.exe" -DCMAKE_AR="D:/bit/QT/QtCreator/Tools/mingw1310_64/bin/ar.exe" -DCMAKE_RANLIB="D:/bit/QT/QtCreator/Tools/mingw1310_64/bin/ranlib.exe" -DBUILD_SHARED_LIBS=OFF ..
mingw32-make
mingw32-make install

接着看C:\Program Files (x86)下是否有taglib文件夹,(默认就是在这里生成的,如果不是,请仔细看cmake生成的日志),文件夹内容如下

image-20250320163934837

其中./include/taglib/存放的是.h文件,./lib/存放的是.a文件(注意,如果你使用的Qt套件是MSVC的,应该是.lib文件),下面两点需要注意

  • tag.libtag_c.lib是MSVC格式的静态库(.lib扩展名)
  • MinGW无法直接链接MSVC编译的库,必须使用MinGW编译的.a格式库

2. 下载zlib

taglib库需要使用该库,如果没安装请先把它安装,后面是地址,安装方式与前面一模一样
madler/zlib: A massively spiffy yet delicately unobtrusive compression library.

3. 修改.pro文件

创建一个基于Widget的项目,打开.pro文件,内容如下

QT += core gui widgets
CONFIG += c++17DEFINES += TAGLIB_STATIC  # 关键定义, 只使用静态库SOURCES += main.cpp widget.cpp
HEADERS += widget.h
FORMS += widget.uiINCLUDEPATH += "C:/Program Files (x86)/taglib/include"
LIBS += -L"C:/Program Files (x86)/taglib/lib" -ltag -ltag_cINCLUDEPATH += "C:/Program Files (x86)/zlib/include"
LIBS += -L"C:/Program Files (x86)/zlib/lib" -lz

导入完毕后重新构建一下项目

4. 测试代码

widget.cpp如下

#include "widget.h"
#include <QFileDialog>
#include <QUrl>
#include "taglib/fileref.h"
#include "taglib/tag.h"
#include "ui_widget.h"Widget::Widget(QWidget* parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);tag_lib_for_test();
}void Widget::tag_lib_for_test()
{auto            music_url = QFileDialog::getOpenFileUrl(this, "选择要上传的歌曲");std::wstring    wpath     = music_url.toLocalFile().toStdWString(); // 使用宽字符路径解决Windows中文路径问题TagLib::FileRef file(wpath.c_str());if (!file.isNull() && file.tag()) {TagLib::Tag*             tag        = file.tag();TagLib::AudioProperties* properties = file.audioProperties();QString                  title      = QString::fromStdWString(tag->title().toWString());QString                  artist     = QString::fromStdWString(tag->artist().toWString());QString                  album      = QString::fromStdWString(tag->album().toWString());QString                  year       = QString::number(tag->year());int                      duration   = properties->lengthInMilliseconds();qDebug() << "Title:" << title;qDebug() << "Artist:" << artist;qDebug() << "Album:" << album;qDebug() << "Year:" << year;qDebug() << "Duration:" << duration << "milliseconds";}
}Widget::~Widget()
{delete ui;
}

运行结果如下,当你选中某一个歌曲:

image-20250320165325015


PS:导入过程一波三折,我最开始使用Visual Studio来编译改库,生成的是.lib文件,结果当然是根本不能运行,后面换成.a还是不行,后来发现之前编译的zlib库还是.lib文件,于是又用mingw重新编译了一下。结果还是不行,当时真的崩溃了(╯‵□′)╯︵┻━┻,询问AI后发现需要指定使用mingw编译器,而且还需要加上BUILD_SHARED_LIBS=OFF这个选项,将两个库重新编译了一下,终于,报错没有了,程序跑起来了。一切都是mingw和msvc不兼容的原因,太折磨了,于是写这篇文章,避免以后踩坑。

参考文章:

  1. Qt使用Taglib库读取mp3文件标签信息_qt taglib-CSDN博客
  2. Windows中zlib的安装与配置_zlib windows-CSDN博客
  3. Qt调用第三方库的通用方式(静态链接库.a或.lib、动态链接库.dll)_qt引入第三方库-CSDN博客

文章转载自:

http://K5a7Fqfh.tkzrh.cn
http://i6At7yOX.tkzrh.cn
http://2c1h1zwp.tkzrh.cn
http://gi6qbc1V.tkzrh.cn
http://gDkV6Bls.tkzrh.cn
http://7oZsE0aZ.tkzrh.cn
http://ymjiA3Ue.tkzrh.cn
http://RO7FJj3q.tkzrh.cn
http://bcDliNDD.tkzrh.cn
http://XRhS5yrP.tkzrh.cn
http://BOor5gAD.tkzrh.cn
http://5KC2P3Wm.tkzrh.cn
http://klzFpio1.tkzrh.cn
http://gm471b4I.tkzrh.cn
http://6VoMMRnW.tkzrh.cn
http://XLIpS9iI.tkzrh.cn
http://rJFqyOeO.tkzrh.cn
http://bntcMFp7.tkzrh.cn
http://7oEmP3eJ.tkzrh.cn
http://VpM8xvul.tkzrh.cn
http://ybsMEtSi.tkzrh.cn
http://N9IZxvLM.tkzrh.cn
http://ur5GJFcm.tkzrh.cn
http://r8Fs1tMD.tkzrh.cn
http://JGhr9TvH.tkzrh.cn
http://PjaBEtyA.tkzrh.cn
http://E0D25fjX.tkzrh.cn
http://SzXCuh4Z.tkzrh.cn
http://g1FG6Uht.tkzrh.cn
http://ujU8c8bg.tkzrh.cn
http://www.dtcms.com/wzjs/638233.html

相关文章:

  • 宁波外贸网站设计如何登录百度站长平台
  • 2345浏览器网站沧州网络运营公司
  • 网站怎么做市场分析建站之星模板的使用
  • 淮北建网站费用网站开发的最后5个阶段是什么
  • 长春启做网站多少青岛公司做网站
  • 国内最大的c2c网站是网站运营的作用
  • 好的交互设计网站美工培训班培训学费
  • 网站备案能不能出现世界wordpress 媒体库 文件夹
  • 广州建设集团网站wordpress分页功能
  • 网站管理助手3.0做网站需要了解什么
  • 网站底部版权代码合肥网络公司排名
  • 郑州高端定制网站建设公司无锡做网站公司哪家比较好
  • 网站建设流程表雅诗兰黛网络营销策划书
  • 自助建站软件公司教育网站制作设计
  • 做钢材的做什么网站效果好做个免费的网站
  • 凡客优品官方网站做网站需要前置审批
  • 潍坊建设网站公司电话简单的网站
  • 网站死链怎么删除网站免费推广的方法
  • 太原住房与城乡建设厅网站如何做网站搜索引擎优化
  • 微信网站和手机网站的区别哈尔滨免费网站制作
  • 最好用的企业网站cms万网市值
  • 石家庄网站seo服务黑群辉wordpress
  • 织梦网站源码找一品资源腾讯云服务器手动WordPress
  • 做网站的图片Pc端和手机端的区别重庆今天新闻发布会直播
  • 全国网站制作公司网站开发程序
  • 以数字域名为网址的网站网站建设要多久豆瓣
  • 设计平台网站辽宁城市建设职业技术学院教育网站
  • 怎么在子域名建立一个不同的网站百度地图api wordpress
  • 医院网站建设策划书网站模板 酒类
  • 中法电商网站建设无限个网站虚拟空间