2015-05-31 2 views
1

В настоящее время я пытаюсь написать небольшую программу с использованием аудио-библиотек FMOD, но мне трудно понять, как их связать.C++ Library Linking 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 here enter image description here

Интересно, если я прокомментирую вызов System_Create, то инициализация FMOD :: System и Sound все еще работает нормально.

ли я связь неправильно, я не могу понять, почему это не были бы работать (да и я на x86_64 архитектуры, за выход uname -a)

+0

Я думаю, что вам не хватает libfmodex.so – JosEduSol

+0

там не появляется, чтобы быть libfmodex.so библиотека где-нибудь в последних версиях FMOD, более старые версии появляются, чтобы иметь эту библиотеку, и я попытался составить более ранняя версия с использованием 'g ++ -I/home/me/fmod_test/fmodex/inc/-L/home/me/fmod_test/fmodex/lib/-lfmodex64 -lfmodexL64 test.cpp -o test', но все же имела ту же ошибку – suphug22

ответ

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