Доброго времени суток, Господа. Захотел подключить к своему проекту звук, натолкнулся на OpenAL впервые. Прочел немного документации о нем, установил.
Как сказано, alut небольшая оберточка над OpenAL, которая поставляется вместе с OpenAL. Почему-то после установки OpenAL alut я так и не нашел.
Решил порыскать в инете, качнул...статические библиотеки у этого alut'а с расширением .a
Честно, первый раз вижу такие.
Подскажите пожалуйста, как мне подключить эти либы к VS 2015? Или как установить OpenAL вместе с alut одновременно - они вроде как вместе идут.
Скомпилируй alut из исходников, че как ни пацан
>расширением .a
это линь
mr.DIMAS, хотел уже готовенькое:)
Короче начал компилировать в lib, все удачно. Подключаю теперь эту статическую библиотеку к своему проекту, пишет, как-будто не может найти определений некоторых функций... реализация их имеется, сам проверял, но почему-то, значит, она не скомпилировалась в эту библиотеку. Вот ошибки:
1>hello_world.obj : error LNK2019: unresolved external symbol __imp__alutInit referenced in function _main 1>hello_world.obj : error LNK2019: unresolved external symbol __imp__alutExit referenced in function _main 1>hello_world.obj : error LNK2019: unresolved external symbol __imp__alutCreateBufferHelloWorld referenced in function _main 1>hello_world.obj : error LNK2019: unresolved external symbol __imp__alutSleep referenced in function _main
Кстати, в dll компирируется, и проект нормально работает с ней. Только с lib не получается.
bretbas
Пути до статических библиотек нормально прописал?
AMM1AK, да, все нормально
Короче остановился на динамической библиотеки. Подключаю к проекту. Ничерта не работает.
В инете нашел легкий пример для реализации одного статического слушателя, вокруг которого вращается один источник звука. Код компилируется, но выдает ошибки при загрузки wav файла, причем любого. Вот код:
#include <iostream> #include <string> #include <time.h> #include <al.h> #include <alc.h> #include <AL/alut.h> #include "Vector3D.h" #include <conio.h> ALuint buffer; // buffer for sound data ALuint source; // source of sound Vector3D sourcePos (0, 0, 2 ); // source position Vector3D sourceVel ( 0, 0, 0 ); // source velocity (used for doppler effect) Vector3D listenerPos ( 0, 0, 0 ); // listeners position Vector3D listenerVel ( 0, 0, 0 ); // listern's velocity float listenerOri [] = { 0, 0, -1, 0, 1, 0 }; // listeners orientation (forward, up) bool setupSource ( const char* fileName ) { ALenum format; ALsizei size; ALvoid * data; ALsizei freq; ALboolean loop; alGenBuffers ( 1, &buffer ); // create buffer if ( alGetError ( ) != AL_NO_ERROR ) return false; // load .wav data using alut alutLoadWAVFile ( ( ALbyte *)fileName, &format, &data, &size, &freq, &loop ); alBufferData ( buffer, format, data, size, freq ); alutUnloadWAV ( format, data, size, freq ); alGenSources ( 1, &source ); // create source if ( alGetError ( ) != AL_NO_ERROR ) return false; // setup source params alSourcei ( source, AL_BUFFER, buffer ); alSourcef ( source, AL_PITCH, 1.0f ); alSourcef ( source, AL_GAIN, 1.0f ); alSourcefv ( source, AL_POSITION, sourcePos ); alSourcefv ( source, AL_VELOCITY, sourceVel ); alSourcei ( source, AL_LOOPING, AL_TRUE ); return true; } int main ( ) { alutInit ( NULL, 0 ); // initialize OpenAL and clear the error bit. alGetError ( ); const char* fileName = "qq.wav"; if ( !setupSource ( fileName ) ) // load the wav data. { std :: cout << "Error loading data: " << fileName; return 0; } alListenerfv ( AL_POSITION, listenerPos ); alListenerfv ( AL_VELOCITY, listenerVel ); alListenerfv ( AL_ORIENTATION, listenerOri ); std :: cout << "Press q to quit\n"; alSourcePlay ( source ); while ( !kbhit ( ) ) { float secs = clock ( ) / CLOCKS_PER_SEC; sourcePos.x = 5*sin( secs*0.3); sourcePos.z = 5*sin( secs*0.3); alSourcefv ( source, AL_POSITION, sourcePos ); } getche ( ); alDeleteBuffers ( 1, &buffer ); alDeleteSources ( 1, &source ); alutExit ( ); return 0; }
Что здесь может быть не так, не подскажете?
Проблему решил, этот код оказывается только mono wav читает.
Вопрос все-таки, как же lib'ку подключить, а не dll?:)
Тема в архиве.