«Проект», над которым я сейчас работаю, — это проигрыватель Tui WAV. Я на первом этапе, когда хочу прочитать и воспроизвести песню/звук в формате wav.
Имейте в виду, что я начал использовать C 4 недели назад, так что я новичок.
Я не использую никакую IDE и cc для компиляции (cc main.c -o main -lm)
Я скачал portaudio через yay/pacman, скачал исходный код libsnd из здесь, установил с помощью документации (./configure && make && make install).
Исходники libsnd находятся в той же папке, что и мой код main.c.
Вывод ls -a
. c-econio 'Goran Bregović - Kalashnikov.mp3' kalasnikow.wav main.c test.c
.. .git 'Goran Bregović - Kalashnikov.wav' libsndfile-1.0.28 random.mp3
c-econio и libsndfile-1.0.28 — это каталоги (библиотеки), которые я хочу использовать (econio будет использоваться позже). Как упоминалось ранее, portaudio устанавливается через менеджер пакетов.
Я понятия не имею, работает ли #inlude <portauido>, потому что не знаю, как проверить его без libsnd.
Как включить portaudio и libsnd в этот код и как его протестировать? Нужно ли мне что-то добавлять в компилятор (cc)? Я использую Linux.
main.c
#include <dirent.h>
#include <stdio.h>
#include <string.h>
#include <portaudio.h>
int listwav() {
int i = 1;
DIR *d;
struct dirent *entry;
d = opendir("."); // Megnyitom az éppenleges DIR-t.
if (d) {
while ((entry = readdir(d)) != NULL) { // Ameddig van file + mp3 kiiratás.
if (strlen(entry->d_name) > 4 && strcmp(entry->d_name + strlen(entry->d_name) - 4, ".wav") == 0) {
printf("\t%d %s\n",i, entry->d_name);
i++;
}
}
closedir(d);
}
return (0);
}
void play(){ // play audio "ffplay -v 0 -nodisp -autoexit"
printf("What to play? \n");
listwav();
// system("playerctl play");
}
void stop(){
printf("Stopped\n");
// system("playerctl stop");
}
int chose(){
int chosen = 0;
printf("Choose what to do:\n 1.Play\n 2.Stop\n 3.Exit\n Chosen: "); scanf("%d", &chosen);
while (chosen != 3){
switch (chosen) {
case 1: play(); break;
case 2: stop(); break;
}
return 0;
}
}
/// -----
int main(){
chose();
}
Обновлено: Необновленная версия папки, которую я использую: https://github.com/Lolis4TheWin/mpc3
Создать файл? Вы имеете в виду файл make libsnd или мой код? Потому что я не знаю, как создать файл make, и у меня его нет.
Как вы компилируете и связываете свой код?
«Я не использую никакую IDE и cc для компиляции (cc main.c -o main -lm)» Первый раздел.
Если вы собираете и устанавливаете библиотеку, вам не нужно помещать ее в собственную папку с исходными кодами. Это только загромождает папку. Держите вещи отдельно. После того, как вы сделали make install из этой библиотеки, сгенерированная библиотека должна находиться в папке вашей библиотеки, и вам не нужно хранить исходные коды в своем собственном проекте.
А потом я просто добавляю #include <>?
Да, это должно быть возможно. После успешного выполнения make install заголовки и библиотеки можно будет использовать, как показано в документации библиотеки.





Итак, я наконец понял!
./configure; make ; make install)/usr/local/lib каталоге.А) вариант
gcc -lsndfile main.c -o main -lm && ./main — это то, что мне пришлось использовать при компиляции.
После -l идет название библиотеки. -o обозначает выходной файл, а -lm обозначает некоторую библиотеку, которую мне пришлось включить из-за Linux. (Думаю, не основанная информация.)
И мне пришлось включить такие библиотеки:
#include <sndfile>
#include <portaudio>
Б) вариант
Связать библиотеку с путем внутри ""
#include "usr/local/lib/libsndfila.a"
Похоже, вам просто нужно связать библиотеки с вашим исполняемым файлом. Можете ли вы включить свой make-файл в свой вопрос?