Verwendung eines C-Programms
-
Das ist vollkommen korrekt.

Nur weiß ich nicht, wie ich das Beispiel-Programm verwenden soll
-
Es ist ein C Programm. Womit übersetzt man das wohl?
-
Proton23 schrieb:
Das ist vollkommen korrekt.

Ja. Und?
Hast du chromaprint heruntergeladen, seine Abhängigkeiten bereits parat (installiert/kompiliert) und übersetzt? Wenn nein, woran scheiterts? Welche Buildumgebung? Mensch, wie soll man dir helfen, wenn du nix sagst??
-
manni66 schrieb:
Es ist ein C Programm. Womit übersetzt man das wohl?
Die Entwicklungsumgebung erkennt üblicherweise an der Dateiendung um welche Sprache es sich handelt und wirft den passenden Compiler an.
Ich glaube eher, es haut nicht hin weil irgendwelche .h's fehlen.
-
@Swordfish:
Auf der Seite von Chromaprint steht:Note that the library only calculates audio fingerprints from the provided raw uncompressed audio data. It does not deal with audio file formats in any way. Your application needs to find a way to decode audio files (MP3, MP4, FLAC, etc.) and feed the uncompressed data to Chromaprint.
There is an example application written in C that uses FFmpeg to calculate fingerprints from any audio files
Dieses Beispiel-Programm(fpcalc) möchte ich gerne verwenden.
Ich bin mit Linux unterwegs und alle dev-Bibliotheken für FFmpeg und Chromaprint sind installiert, mir fehlt nur das Verständnis wie man das macht.SG
Proton
-
gcc fpcalc.c -o fpcalc -lffmpeg -lchromaprint
Ungefähr so
-
@manni66
Die Antwort ist für euch wahrscheinlich so naheliegend, dass ihr nicht mal darüber nachdenkt, dass jemand das falsch machen könnte. Ich bin aber bisher so wenig mit der C++-Materie vertraut, dass ich nicht weiß, wie ich dieses kompilierte Programm in meinem Programm verwende bzw. wie ich das Programm als Bibliothek kompiliere oder was auch immer man tun muss um die Funktionalität zu verwenden.Ich weiß nicht mal wie ich das verständlich ausdrücken soll

SG
Proton
-
Das Programm ist ein Beispiel. Du kannst es nicht in einem eigenen Programm verwenden. Du kannst dir nur ansehen, wie es dort gemacht wird und es in deinem Programm ähnlich machen.
Es mag sein, dass dich das völlig überfordert - wir können diese Lücke im Rahmen dieses Forums nicht füllen. Du wirst entweder Deine Kenntnisse in C und C++ erweitern müssen, oder du suchst jemanden, der dir das gewünschte Programm schreibt.
-
Ahhhhhh okay, so herum wird ein Schuh draus.

Ich habe das so verstanden, dass man das Programm irgendwie verwenden könnte, aber das habe ich wohl falsch verstanden.Ich schreibe dieses Programm in C++, weil ich meine Kenntnisse erweitern möchte.
Wenn ich es einfach haben wollte, würde ich es in Java schreiben, das kann ich nämlich.
Auf jeden Fall vielen Dank für die kleine Erleuchtung in meiner Dunkelheit.

Es wäre dann wahrscheinlich sinnvoll, fpcalc als C++ Bibliothek zu schreiben, oder?
Wie sinnvoll wäre es für einen Anfänger wie mich, ein Tool wie ctocpp auf das C-Programm loszulassen?Schönen Gruß
Proton
-
Proton23 schrieb:
Ich schreibe dieses Programm in C++, weil ich meine Kenntnisse erweitern möchte.
Scheint dann ein etwas großer Schritt zu sein ...
Proton23 schrieb:
Es wäre dann wahrscheinlich sinnvoll, fpcalc als C++ Bibliothek zu schreiben, oder?
Vermutlich eher nicht
Proton23 schrieb:
Wie sinnvoll wäre es für einen Anfänger wie mich, ein Tool wie ctocpp auf das C-Programm loszulassen?
C nach C++ Konverter - wusste nicht, dass es so einen hirnlosen Schwachsinn gibt.
-
manni66 schrieb:
Proton23 schrieb:
Ich schreibe dieses Programm in C++, weil ich meine Kenntnisse erweitern möchte.
Scheint dann ein etwas großer Schritt zu sein ...
Mag sein, aber das werde ich schon schaffen.
manni66 schrieb:
Proton23 schrieb:
Es wäre dann wahrscheinlich sinnvoll, fpcalc als C++ Bibliothek zu schreiben, oder?
Vermutlich eher nicht
Okay, ich glaube hier liegt mein Problem. Wenn ich die ausführbare Datei nicht verwenden kann, sondern das nur als "Vorlage" dient, soll ich das in eine C-Bibliothek umwandeln?
manni66 schrieb:
Proton23 schrieb:
Wie sinnvoll wäre es für einen Anfänger wie mich, ein Tool wie ctocpp auf das C-Programm loszulassen?
C nach C++ Konverter - wusste nicht, dass es so einen hirnlosen Schwachsinn gibt.
Gibt es eine Erklärung warum das hirnlosen Schwachsinn ist?
-
Das Beispielprogramm ist ein vollständiges Programm, es kann also so wie es ist direkt verwendet (compiliert) werden. Dazu benögtigst du eben chromaprint und ffmepg als Bibliotheken. Bei mir sieht der Aufruf des Compilers so aus:
gcc main.c -lchromaprint -lavutil -lavcodec -lavformatDamit erhälst du eine ausführbare Datei (hier: a.out), die dein zu verwendendes Programm ist.
Es gibt also keine Notwendigkeit, eine Bibliothek zu erstellen, einfach compilieren und fertig.
-
@Hyde++
Erstmal danke für die Antwort.
fpcalc.c zu kompilieren ist überhaupt kein Problem, wahrscheinlich sehe ich den Wald vor lauter Bäumen nicht,
aber wie verwende ich diese kompilierte Datei in meinem Programm? So wie ich manni66 verstanden habe, gar nicht.Aus meiner Sicht, benötige ich den Fingerprint um darüber meine Musikdateien zu taggen. Für den Fingerprint braucht
chromaprint die decodierte Musikdateien. Zum decodieren verwendet fpcalc.c dann FFmpeg. Soweit so gut, möge mich jemand
korrigieren wenn ich was falsches sage.Sehe ich das richtig, dass ich die Funktionalität in einer Klasse in meinem C++-Programm implementieren muss?
Schönen Gruß
Proton
-
das Beispiel fpcalc.c ergibt nach dem kompilieren/linken ein eigenständiges Programm - und das Beispiel scheint Funktionalität zu beinhalten die du in deinem eigenen Programm verwenden möchtest - nicht fpcalc.c als ganzes - oder?
dann musst du nur die Teile aus dem Beispiel in dein eigenes Programm kopieren und so abändern das alles noch kompiliert und linkt - hier kann dir keiner genau sagen welche Zeilen du aus dem Beispiel kopieren musst damit es in deinem Programm sinnvoll arbeiten kann
einen C->C++ Konverter (was für ein sinnloser Müll) brauchst du nicht da C auch in einer C++ Umgebung/Programm kompiliert werden kann
wenn du die main (damit sie nicht mit deiner Programm-main kollidiert in in dem fpcalc.c umbenennst z.B. in "Proton23_main" fpcalc.c kompilierst und das gegen dein Programm linkt kannst du die Proton23_main einfach - wenn irgendwo forward-deklariert - aufrufen
-
@Gast3
Danke nochmal für die Erklärung, dann habe ich manni66 ja doch richtig verstanden.Vielen Dank an alle für ihre Mühen!
Schönen Gruß
Proton