C ++库链接FMOD

时间:2015-05-31 05:05:45

标签: c++ linker shared-libraries fmod

我目前正在尝试使用FMOD音频库编写一个小程序,但我很难理解如何链接它们。

我有一个小程序,如下所示

#include "/home/me/fmod_test/api/lowlevel/inc/fmod.h"
#include "/home/me/fmod_test/api/lowlevel/inc/fmod.hpp"
#include "/home/me/fmod_test/api/lowlevel/inc/fmod_errors.h"

#include <iostream>
using namespace std;


int main()
{
FMOD::System     *system; 
FMOD::Sound      *sound1;

FMOD::System_Create(&system);              // create an instance of the game engine
}

但是当我尝试使用

进行编译时
g++ -L/home/me/fmod_test/api/lowlevel/lib/x86_64 -lfmod -lfmodL test.cpp -o test

我收到这样的错误

In function `FMOD::System_Create(FMOD::System**)':
test.cpp:(.text._ZN4FMOD13System_CreateEPPNS_6SystemE[_ZN4FMOD13System_CreateEPPNS_6SystemE]+0x14): undefined reference to `FMOD_System_Create'

我添加了屏幕截图,表明这些库和标题确实存在于我的系统enter image description hereenter image description here

有趣的是,如果我注释掉System_Create调用,FMOD :: System和Sound初始化仍然可以正常工作。

我链接不正确,我无法弄清楚为什么这不起作用(是的,我按照uname -a的输出在x86_64架构上)

1 个答案:

答案 0 :(得分:0)

  

g++ -L/home/me/fmod_test/api/lowlevel/lib/x86_64 -lfmod -lfmodL test.cpp -o test

此命令行是向后的。正如this answer中所解释的,库必须在命令行上跟踪源文件和对象文件(答案说顺序对共享库无关紧要,但答案部分是错误的(对于至少一些连接器))。尝试:

g++ -L/home/me/fmod_test/api/lowlevel/lib/x86_64 test.cpp -o test -lfmod -lfmodL