Frage

Ich bin derzeit versucht, die Bewegung von C # zu machen und frei von meinen Plattformgrenzen brechen durch Qt / C ++.

Ich war TagLibSharp in meinem alten Projekt verwenden, aber ich versuche jetzt das Original C ++ Quelle finden Sie hier:

http://developer.kde.org/~wheeler/taglib.html

Ich bin in einer Welt des Schmerzes versuchen, dies in meine Anwendung zu kompilieren. Die meisten dieser Linux-basierten C ++ ist Kauderwelsch zu mir und ich weiß nicht, wie man richtig diese Bibliothek in mein Projekt mit Qt gehören zu. Ich bin mit Qt Creator für den Großteil meiner Arbeit (alles, was ich nur kann).

Kann jemand bitte mir einige hilfreiche Tutorial oder Führungen zeigen? Alles, was mir zu helfen, zu verstehen, was ich auch mit dieser Quelle tun würde sehr geschätzt werden. Ich habe ein sehr gründliches Verständnis von C # und Windows-Programmierung, aber ich weiß nicht genau einen guten Griff auf dem, was ich mit dieser Art von Open-Source-Projekten mache.

Danke!

EDIT - DIE ANTWORT IST HIER Ich beschloss, noch eine Frage zu stellen, die ein bisschen mehr verfeinert denn es war.

compilieren statische TagLib 1.6.3 Bibliotheken für Windows

Einige ältere Bearbeitungen ...

ich jetzt habe TagLib mit Qt kompiliert, sondern leite in „Nicht definierte Referenz“ Fehler.

*. Pro

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();

Hier sind einige Beispiele für die genauen Fehler:

./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 

Kommandozeilen-Schritte g ++ (Mac / Linux)

  1. ./ configure --enable-shared = false --enable-static = true
  2. make
  3. ??? Nein * .a oder * LIB-Dateien erstellt
War es hilfreich?

Lösung

Für die Zukunft Besuche diesen Beitrag . Ich habe dargelegt, wie ich TagLib durch Windows 7 QtCreator zusammengestellt.

Andere Tipps

Wenn Sie neu in C ++ Programmierung gibt es mehrere Probleme, die Sie haben zu erfassen Ihre Aufgabe zu erfüllen:

  • Quelldateien (*.cpp) enthalten den eigentlichen Quellcode, während Header-Dateien (*.h) nur erklären, was in einer Quelldatei ist. Sie müssen alle Header in Ihren Quelldateien enthalten, dass die Verwendung Klassen / Funktionen / Variablen aus anderen Quelldateien.
  • Sie müssen verstehen, wie der Prä-Prozessor arbeitet. AFAIK C # nicht über ein. Wikipedia-Artikel sollte Ihnen einen guten Überblick: http://en.wikipedia.org/wiki/C_preprocessor
  • Angenommen, Sie TagLib als dynamische Bibliothek verwenden möchten, haben Sie eine Qt-Projekt erstellen nur für den Aufbau TagLib als DLL (.proDatei Richtlinien TEMPLATE=lib, CONFIG+=dll)
  • Wenn Sie eine dynamische Bibliothek aus einem Quelldateien erstellen möchten, können Sie die Funktionen markieren müssen Sie später als exportierbar verwenden möchten. In TagLib dies durch die Definition des Präprozessormakro MAKE_TAGLIB_LIB (in Ihrer taglib .proDatei: DEFINES+=MAKE_TAGLIB_LIB) erfolgt
  • Dann haben Sie die dynamische Bibliothek erstellen (in der Pro-Datei: TEMPLATE=lib, dann alle Quellen und Header von taglib hinzufügen). Wenn Sie gcc verwenden, um dies führt in zwei Dateien TagLib.dll und libTagLib.a.
  • Wenn Sie Ihre Anwendung erstellen Sie die Header-Dateien von TagLib in Ihrer Quelle umfassen müssen und sagen dem Compiler über die Bibliothek (in der .pro-Datei: LIBS+=libTagLib.a)
  • In Ihrem Code sind Sie einfach die Header-Datei aus Ihrer Bibliothek. Angenommen, Sie TagLib::Tag in der Quelldatei verwenden möchten, dann müssen Sie #include <taglib/tag.h>; Sie haben auch den Compiler zu sagen, (genauer gesagt: den Präprozessor), wo es das taglib Verzeichnis finden. In Ihrer .proDatei tun Sie dies, indem INCLUDEPATH+=/path/to/taglib hinzufügen.

Die big points und sind nicht eine eingehende Erklärung dessen, was Sie zu tun haben. Bitte fordern Sie weitere detaillierte Fragen, wenn Sie ein Problem haben, wenn diese Punkte zu verwirklichen.

Für weitere Informationen sehen Sie die Qmake Handbuch: http: // doc .trolltech.com / 4.6 / qmake-Variable-reference.html # libs

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top