2016-06-29 23 views
0

Ich brauche Portaudio der paex_record_file.c Datei mit Eclipse und CDT auf Ubuntu 12.04.5 LTS zu kompilieren.undefiniert Bezug auf `PaUtil_GetRingBufferReadAvailable‘ bei der Kompilierung paex_record_file.c von Portaudio Eclipse

Dev-Bibliotheken (Libportaudio-dev) wurde über Synaptic installiert. Ich erstellen neues Eclipse-Projekt und erstellen (kopieren) Sie diese nur Datei (also Projekt enthält nur eine Benutzerquelldatei 'paex_record_file.c', 1752 2011-09-08 03:21:55).

Dann benutze ich Eclipse Pkg-config, um 'portaudio' (dev) -Bibliothek hinzuzufügen. Aber es kompiliert nicht mit Fehler

../src/paex_record_file-test.c:47:27: fatal error: pa_ringbuffer.h: No such file or directory 

Dann von git genommen Quelle Zweig

$ git clone https://git.assembla.com/portaudio.git 
./configure 
make 
sudo male install 

Aber immer noch denselben Fehler (keine 'pa_ringbuffer.h') erhalten.

Dann verwende ich während Blindtests und Fehlern Projekt - Eigenschaften - C bauen - Einstellungen - Werkzeugeinstellungen - Includes und füge den Pfad '/ home/test/portaudio/src/common' hinzu, der die benötigte .h Datei enthält und (Dieser) Fehler verschwindet.

Frage 1: Ist dieser Schritt richtige Verwendung der Eclipse-Einstellungen in diesem Fall? (Ich glaube nicht, weil ich nie diese Einstellung vorher verwenden muss).

Aber dann zeigt es mehrere Fehler wie

/home/doc/prog/paex_record_file-test/Debug/../src/paex_record_file-test.c:110: undefined reference to `PaUtil_GetRingBufferReadAvailable' 

und das ist nicht wiederherstellbar.

Frage 2. Wie kann es mit Eclipse behoben werden, ABER ohne alle Portaudio Quellbaum zu meinem Projekt zu kopieren?

Ich habe pa_ringbuffer.o Datei irgendwo im System, aber keine so etwas wie pa_ringbuffer.so Dateien. Ich habe kompiliert und ausgeführt wird unter Eclipse-PA anderen Anwendungen, die sind nicht verwenden PA Ringpuffer und nur

#include "portaudio.h" 

und das Hinzufügen von PA lib über pkgconfig ist genug. Danke.

Antwort

0

haben Sie einen Blick in die portaudio.git:

cd portaudio/ 
find . -name pa_ringbuffer.h 
The reply is : ./src/common/pa_ringbuffer.h 

..., so dass Sie den Header Standort haben zu kopieren, wo sie zu finden sind. Aber: Erwarten Sie nicht, eine einzelne Datei zu kompilieren → oft nicht möglich mit einer komplexen Anwendung. I.e. Das Setup ist für das Kompilieren des kompletten Portaudio/gedacht.

+0

Wenn ich auf diese Weise versuche, Eclipse driven Linker wird hungrig und mehr und mehr Quelle .h und sogar .c-Dateien. Ist das wirklich richtig und professionell, um einen Teil des Quellbaums in mein Projekt zu kopieren? Kann ich .o-Dateien, die in einem separaten Ordner (Portaudio) abgelegt sind, nur mit einem Link zu diesen verwenden, um das Kompilieren bereits kompilierter Teile zu vermeiden? Und warum andere Beispiele von Portaudio brauchen nichts ungewöhnliches, es ist mein Fehler, Eclipse-Fehler oder Portaudio-Fehler? .. Danke. – user2223633

+0

Also Kopieren von eins nach dem anderen Source-Dateien und wie ~ ~ Hälfte der Source-Struktur in meinem Projekt, ich endete mit pa_front.c, die haben * 'Pa_GetDefaultInputDevice()' *, die wiederum ersetzt man stammt von devbs - und es ist nicht Arbeit, kein Audiogerät sieht es. Also, auch mit einer Gabel der PA-Quelle, ist es nicht im Falle von '.paex_record_file.c' – user2223633

+0

versuchen, auf andere Umgebung zu kompilieren, bekomme ich zusätzliches Problem, weil dieses Beispiel einfach nicht mit Linux arbeiten. Es enthält die folgende Zeile: _/* Starten Sie einen neuen Thread in der angegebenen Funktion, im Moment nur Windows, sollte aber sehr einfach auf Posix-Betriebssysteme (Linux/Mac) */_ erweitert werden. Es ist völlig unmöglich für mich, dies von Grund auf neu zu schreiben. Im Vergleich zum vorherigen Problem gibt mir das also viel weniger (Null) Chancen, Ring-Puffer-Arbeit zu bekommen. (Jede Hilfe mit Codebeispiel sehr willkommen). Vielen Dank. – user2223633