我目前正试图从C#迁移,并使用Qt / C ++摆脱我的平台边界。
我在旧项目中使用TagLibSharp,但我现在正尝试使用此处找到的原始C ++源代码:
http://developer.kde.org/~wheeler/taglib.html
我正处于一个受伤的世界,试图将其编译到我的应用程序中。大多数基于Linux的C ++对我来说都是胡言乱语,我不知道如何使用Qt将这个库正确地包含到我的项目中。我正在使用Qt Creator进行大部分工作(我可能做的一切)。
有谁能请我指点一些有用的教程或指南?任何帮助我理解我甚至用这个来源做什么的东西都将不胜感激。我对C#和Windows编程有一个非常透彻的理解,但我对这些类型的开源项目所做的工作并没有很好的处理。
谢谢!
编辑 - 答案就在这里 我决定发布另一个更精致的问题。
Compiling static TagLib 1.6.3 libraries for Windows
一些较旧的编辑...
我现在使用Qt编译了TagLib,但遇到了“未定义的引用”错误。
*。亲
INCLUDEPATH += ../$${TARGET}/taglib-win32
LIBS += -L"..\\$${TARGET}\\taglib-win32"
LIBS += -llibtag #It seems to want this to be a *.dll, not a *.a?
DEFINES += TAGLIB_NO_CONFIG
*。CPP
#include <tag.h>
#include <fileref.h>
...
//None of these work, even though they are similar to examples given in TagLib source.
TagLib::FileRef f("03.flac");
TagLib::String test = f.tag()->album();
TagLib::FileName *n = new TagLib::FileName("test");
TagLib::FileRef *f = new TagLib::FileRef();
以下是一些确切错误的示例:
./debug\mythread.o:C:\Users\jocull\Documents\My Dropbox\Code\QT\QtTrayTime-build-desktop/../QtTrayTime/mythread.cpp:20: undefined reference to `_imp___ZN6TagLib7FileRefC1ENS_8FileNameEbNS_15AudioProperties9ReadStyleE'
./debug\mythread.o:C:\Users\jocull\Documents\My Dropbox\Code\QT\QtTrayTime-build-desktop/../QtTrayTime/mythread.cpp:21: undefined reference to `_imp___ZNK6TagLib7FileRef3tagEv'
./debug\mythread.o:C:\Users\jocull\Documents\My Dropbox\Code\QT\QtTrayTime-build-desktop/../QtTrayTime/mythread.cpp:42: undefined reference to `_imp___ZN6TagLib6StringD1Ev'
./debug\mythread.o:C:\Users\jocull\Documents\My Dropbox\Code\QT\QtTrayTime-build-desktop/../QtTrayTime/mythread.cpp:42: undefined reference to `_imp___ZN6TagLib7FileRefD1Ev'
collect2: ld returned 1 exit status
使用g ++(Mac / Linux)
的命令行步骤答案 0 :(得分:3)
为了将来参考,请查看this post。我已经概述了如何通过Windows 7 QtCreator编译TagLib。
答案 1 :(得分:2)
如果您是C ++编程的新手,则必须掌握几个问题才能完成任务:
*.cpp
)包含实际的源代码,而头文件(*.h
)只是声明源文件中的内容。您必须在源文件中包含使用其他源文件中的类/函数/变量的所有标头。TEMPLATE=lib
,CONFIG+=dll
)MAKE_TAGLIB_LIB
(在taglib .pro文件中:DEFINES+=MAKE_TAGLIB_LIB
)TEMPLATE=lib
,然后添加taglib的所有源和标头)。使用gcc时,这将生成两个文件TagLib.dll
和libTagLib.a
。LIBS+=libTagLib.a
)TagLib::Tag
,那么您必须#include <taglib/tag.h>
;您还必须告诉编译器(准确地说:预处理器)它可以找到taglib
目录。在.pro文件中,您可以通过添加INCLUDEPATH+=/path/to/taglib
来执行此操作。 这些是重点,并不是对您必须做的事情的深入解释。如果您在实现这一点时遇到问题,请询问更详细的问题。
有关更多信息,请查看qmake手册:http://doc.trolltech.com/4.6/qmake-variable-reference.html#libs