在C和Fmod中为Android编译终端mp3player:函数获取未定义的引用

时间:2018-11-22 21:48:52

标签: android c terminal mp3 fmod

所有函数都会引发未定义的引用错误。

这是我的代码:

/*

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将解决此问题。如何在c4droid终端上使用它或与GCC一起使用?还是应该将C与libasound一起使用? Sdl混音器工作正常,但只能同时播放一个MP3,并逐个窗口捕获终端。

5 个答案:

答案 0 :(得分:0)

我在编译命令末尾添加了-lfmod。现在它给出:fmod取决于libstdc ++。安装它。

答案 1 :(得分:0)

我做了一些更改,最终代码:

/*

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;
}

答案 2 :(得分:0)

否,只需下载并链接libstdc ++标头以进行编译器

编译命令:

gcc -I /存储/仿真/ 0 /下载/ fmodlowlatencymp3player / fmod / api /低级/ inc -I / system / inc / -L /存储/仿真/ 0 /下载/ fmodlowlatencymp3player / fmod / api /低级/ lib / -L / system / lib mp3player.c -o mp3player -lfmod -llog -lm -lstdc ++

答案 3 :(得分:0)

所有.so库都需要标头,将其下载到/ system / inc并使用-I指令将其链接到gcc。

答案 4 :(得分:0)

解决了!

为fmod下载并链接这些标头或dev数据包依赖项:

liblog安卓 libm安卓 libstdc ++ android

额外: fmod来源:针对Android 7和8进行编译

相关问题