Компиляция терминала mp3player для Android в C и Fmod: функции получает неопределенную ссылку - PullRequest
0 голосов
/ 23 ноября 2018

Все функции выдают неопределенную ошибку ссылки.

Вот мой код:

/*

terminal mp3 player android

requirements:
c4droid terminal fmod

requires:
copy fmod api lowlevel lib armeabi-v7a libs to lib dir

compile:
gcc -I./fmod/api/lowlevel/inc -L./fmod/api/lowlevel/lib/ mp3player.c -o mp3player 

*/

#include <fmod.h>
#include <stdio.h>

static FMOD_SYSTEM * system;
static FMOD_SOUND * audioStream;

int main()
{   
// Create FMOD interface object
FMOD_System_Create(&system);
FMOD_System_SetDSPBufferSize(system, 1000, 2);
FMOD_Channel_SetFrequency(0, 44100);

// Initialise FMOD
FMOD_System_Init(system, 64, FMOD_INIT_NORMAL, 0);

// Load Mp3
FMOD_System_CreateStream(system,  "/storage/emulated/0/playlist/starat16.mp3", FMOD_DEFAULT, 0, &audioStream);

// Play mp3
FMOD_System_PlaySound(system, audioStream, 0, 0, 0);

return 0;
}

fmod.jar решит проблему.Как это использовать или альтернативы с GCC на терминале c4droid?Или я должен использовать C с libasound?Микшер Sdl работает нормально, но одновременно воспроизводит только один MP3 и захватывает терминал за окном.

Ответы [ 5 ]

0 голосов
/ 08 декабря 2018

решено!

скачать и связать эти заголовки или зависимости пакетов dev для fmod:

liblog android libm android libstdc ++ android

extra: fmod source: скомпилировать его для android7 и 8

0 голосов
/ 08 декабря 2018

всем .so libs нужны заголовки, загрузите их в / system / inc и свяжите их с gcc с помощью директивы -I.

0 голосов
/ 23 ноября 2018

Я сделал некоторые изменения, окончательный код:

/*

terminal mp3 player android

requirements:
c4droid terminal fmod and install some dependencies

requires:
copy fmod api lowlevel lib armeabi-v7a libs to lib dir

compile:
gcc -I./fmod/api/lowlevel/inc -L./fmod/api/lowlevel/lib/ mp3player.c -o mp3player -lfmod

*/


#include <fmod.h>
#include <stdio.h>


static FMOD_SYSTEM * system;
static FMOD_SOUND * audioStream;
static FMOD_BOOL * isplaying;

int main()
{   
// Create FMOD interface object
FMOD_System_Create(&system);
FMOD_System_SetDSPBufferSize(system, 1000, 2);
FMOD_Channel_SetFrequency(0, 44100);

// Initialise FMOD
FMOD_System_Init(system, 64, FMOD_INIT_NORMAL, 0);

// Load Mp3
FMOD_System_CreateStream(system,   "/storage/emulated/0/playlist/starat16.mp3", FMOD_DEFAULT, 0, 
&audioStream);

// Play mp3
FMOD_System_PlaySound(system, audioStream, 0, 0, 0);
isplaying=(FMOD_BOOL *)1;
while(FMOD_Channel_IsPlaying(0, isplaying))
{

}

return 0;
}
0 голосов
/ 08 декабря 2018

нет, просто скачайте и свяжите libstdc ++ заголовки для компилятора

команда компиляции:

gcc -I / storage / emulated / 0 / Download / fmodlowlatencymp3player / fmod / api / lowlevel / inc -I / system / inc / -L / storage / emulated / 0 / Скачать / fmodlowlatencymp3player / fmod / api / lowlevel / lib / -L / system / lib mp3player.c -o mp3player -lfmod -llog -lm -lstdc ++

0 голосов
/ 23 ноября 2018

Я добавил -lfmod в конец команды компиляции.Теперь это дает: fmod зависит от libstdc ++.Установите его.

...