如何在C++中使用FMOD?

qxsslcnc  于 11个月前  发布在  其他
关注(0)|答案(3)|浏览(144)

我正在尝试使用FMOD创建一个简单的mp3播放器:

#include "inc/fmod.h"

int main() 
{
    FSOUND_Init(44100, 32, 0);
    return 0;
}

字符串
尝试编译程序时,我得到以下错误:

holle@x300:justmp3$ pwd
/media/daten/Entwicklung/C/justmp3
holle@x300:justmp3$ LD_LIBRARY_PATH=$(pwd)/lib
holle@x300:justmp3$ ls $LD_LIBRARY_PATH
libfmodex-4.34.02.so  libfmodexL-4.34.02.so
holle@x300:justmp3$ g++ -o mp3 mp3.cpp
mp3.cpp: In function ‘int main()’:
mp3.cpp:8: error: ‘FSOUND_Init’ was not declared in this scope


我的错误是什么?我怎么能让g++编译程序?

1qczuiv0

1qczuiv01#

FSOUND_Init是一个FMOD 3 API函数,您正在使用FMOD Ex,因此该函数不存在。要初始化FMOD Ex,您应该包含“fmod.hpp”并使用以下函数:
System_Create创建FMOD系统对象,然后
System::init初始化,后跟
System::Stream来加载你的MP3,然后
System::playSound来播放它。
FMOD中有很多有用的例子可以作为参考,特别是播放流例子。还有CHM格式的完整文档。如果你要从FMOD 3移植代码,我建议你阅读fmodex.chm文档中的移植指南。

zf2sa74q

zf2sa74q2#

您还需要包含库的头文件,添加

#include <fmod.h>

字符串
在代码的开头。

qlfbtfca

qlfbtfca3#

您必须转到FMOD页面(https://fmod.com/),然后登录以下载自定义图形引擎的版本。
x1c 0d1x的数据
安装完成后,我们转到保存文件的文件夹中查找lib文件夹,该文件夹位于FMOD Studio API/Windows/API/core文件夹中。然后选择与我们正在使用的平台对应的文件夹,并将.dll文件复制到我们的项目中。



我们还将库(.lib文件)复制到我们的库(.lib)文件夹中。



然后我们查找lib文件夹,它位于FMOD Studio API文件夹Windows/API/studio中。



我们选择与我们使用的系统相对应的文件夹。我们将库(.lib文件)复制到我们的库文件夹(.lib)。

然后,我们转到FMOD Studio文件夹API/Windows/apistudio中的inc文件夹,并将文件复制到其中。我们返回到项目的includes文件夹,并创建FMOD文件夹,在其中放置复制的文件。

同样,我们转到FMOD Studio文件夹Windows\API\studio API中的inc文件夹来复制您的文件。返回到我们的项目,在项目的include文件夹中,我们创建FMOD文件夹,在其中放置复制的文件。

有了上面的内容,我们现在可以在我们的项目中使用FMOD库。现在在主文件中,我们添加fmod_studio.hpp库和fmod. hpp。

#include <FMOD/fmod_studio.hpp>
#include <FMOD/fmod.hpp>

字符串
初始化FMOD引擎的示例。

FMOD::System* system;
FMOD_RESULT result=FMOD::System_Create(&system)


如果声音是3D的,我建立声音的速度,距离单位和环境声音的比例因子。

system->set3DSettings(1.0,1.0f,1.0f);


我初始化并准备FMOD进行音频播放。

result=system->init(512,FMOD_INIT_NORMAL,nullptr);


将声音加载到内存中以进行流式传输或设置

callback based sounds
FMOD::Sound* sound;
result=system->createSound("name.mp3",FMOD_DEFAULT,nullptr,&sound);


我创建一个频道来播放声音。

FMOD::Channel*channel;
result=system->playSound(sound,nullptr,false,&channel)


这将是所有,不要忘记释放声音引擎,渠道和删除你加载的歌曲.

system->release();
channel->stop();

相关问题