aha....?
ich dachte, weil doch oben im include schon der Pfad steht, müsste er's wissen..:
#include <tinyalsa/asoundlib.h>
aber stimmt ja auch, es gibt ja gar kein Verzeichnis
/tinyalsa/
wo ist dann die lib hin installiert worden?
aha....?
ich dachte, weil doch oben im include schon der Pfad steht, müsste er's wissen..:
#include <tinyalsa/asoundlib.h>
aber stimmt ja auch, es gibt ja gar kein Verzeichnis
/tinyalsa/
wo ist dann die lib hin installiert worden?
Guck mal kurz ins Makefile vom tinyalsa. Es gibt kein 'install' target, sprich die lib wird nicht nach /opt-oder-sonstwohin gelegt, sodass g++ das Ding über die Standardpfade finden kann. Statt dessen liegt alles in dem Verzeichnis wohin Du den Source gepackt hast und das *.h file im include Verzeichnis darunter.
Die Pfade mußt Du Deiner IDE/makefile mitgeben und dann auch noch einfür die Library selbst beim Linken, sorry hatte ich oben vergessen.Code:-ltinyalsa
aha, hier ist was:
/home/pi/tinyalsa/
das ist jetzt ein ziemlich blöder Speicherort, warum nicht global ?
Ich verschiebs mal nach /lib/tinyalsa....
Schei**e, keine Berechtigung.
Was ein Dreck.
Ich HASSE Linux.
wie kann ich das Verzeichnis umändern?
- - - Aktualisiert - - -
hm,
sudo cp -rf ... ...
hat geklappt.
ok.
jetzt also als Zusatz-Parameter für compile und build:
richtig?Code:-I/lib/tinyalsa/include -L/lib/tinyalsa/lib -ltinyalsa
auch
-L/lib/tinyalsa/lib
ist richtig??? wieso nochmal lib am Schluss?
nein kein lib am ende.
du müßtest jetzt die dateien
/lib/tinyalsa/libtinyalsa.so
/lib/tinyalsa/libtinyalsa.a
haben. Damit muß
lauten.Code:-I/lib/tinyalsa/include -L/lib/tinyalsa -ltinyalsa
g++ -Wall -pthread -I/opt/vc/include -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/vcos/pthreads -c "tinyplay0000.c" -lshapes -lwiringPi -lrt -lpigpio -I/lib/tinyalsa/include -L/lib/tinyalsa -ltinyalsa -std=c++11 (im Verzeichnis: /home/pi/Desktop/pi/programs/soundprogs)
tinyplay0000.c: In function ‘int check_param(pcm_params*, unsigned int, unsigned int, char*, char*)’:
tinyplay0000.c:201:43: error: invalid conversion from ‘unsigned int’ to ‘pcm_param’ [-fpermissive]
min = pcm_params_get_min(params, param);
^
In file included from tinyplay0000.c:29:0:
/lib/tinyalsa/include/tinyalsa/asoundlib.h:151:14: note: initializing argument 2 of ‘unsigned int pcm_params_get_min(pcm_params*, pcm_param)’
unsigned int pcm_params_get_min(struct pcm_params *pcm_params,
^
tinyplay0000.c:208:43: error: invalid conversion from ‘unsigned int’ to ‘pcm_param’ [-fpermissive]
max = pcm_params_get_max(params, param);
^
In file included from tinyplay0000.c:29:0:
/lib/tinyalsa/include/tinyalsa/asoundlib.h:153:14: note: initializing argument 2 of ‘unsigned int pcm_params_get_max(pcm_params*, pcm_param)’
unsigned int pcm_params_get_max(struct pcm_params *pcm_params,
^
tinyplay0000.c: In function ‘int sample_is_playable(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)’:
tinyplay0000.c:231:77: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
can_play = check_param(params, PCM_PARAM_RATE, rate, "Sample rate", "Hz");
^
tinyplay0000.c:231:77: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
tinyplay0000.c:232:88: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
can_play &= check_param(params, PCM_PARAM_CHANNELS, channels, "Sample", " channels");
^
tinyplay0000.c:232:88: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
tinyplay0000.c:233:84: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
can_play &= check_param(params, PCM_PARAM_SAMPLE_BITS, bits, "Bitrate", " bits");
^
tinyplay0000.c:233:84: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
tinyplay0000.c:234:92: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
can_play &= check_param(params, PCM_PARAM_PERIOD_SIZE, period_size, "Period size", "Hz");
^
tinyplay0000.c:234:92: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
tinyplay0000.c:235:90: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
can_play &= check_param(params, PCM_PARAM_PERIODS, period_count, "Period count", "Hz");
^
tinyplay0000.c:235:90: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
tinyplay0000.c: In function ‘void play_sample(FILE*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)’:
tinyplay0000.c:277:25: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
buffer = malloc(size);
^
Kompilierung fehlgeschlagen.
was ein Mist
- - - Aktualisiert - - -
ja, habe ich.du müßtest jetzt die dateien
/lib/tinyalsa/libtinyalsa.so
/lib/tinyalsa/libtinyalsa.a
das ist ein c und kein c++ beispiel!
kompilier das mal mit GCC und nicht g++.
die fehler die hier auftreten beruhen darauf das enums in c++ klassen und nicht unsigned ints sind.
auch die typprüfung von buffer ganz unten beruht auf dem strikterem c++ typsystem.
Geändert von botty (21.05.2016 um 16:36 Uhr)
das geht dann nicht, weil wav files ein Teil eines C++ Projekts werden müssen.
Kann man die lib umschreiben auf C++ Kompatibilität?
Lesezeichen