Ошибка - ProteaAudio с Lua не работает - PullRequest
0 голосов
/ 24 декабря 2010

Любая идея, почему я не могу использовать или не могу собрать в Lua ProTeaAudio?

1) Exist

[root@example ~]# yum install lua-devel
Loaded plugins: presto, refresh-packagekit
Setting up Install Process
Package lua-devel-5.1.4-4.fc12.i686 already installed and latest version
Nothing to do

2) не удалось построить RtAudio

[sun@example proteaAudio_src_090204]$ make
g++ -O2 -Wall  -DHAVE_GETTIMEOFDAY -D__LINUX_ALSA__  -Irtaudio -Irtaudio/include -I../lua/src -I../archive/baseCode/include -c rtaudio/RtAudio.cpp -o rtaudio/RtAudio.o
rtaudio/RtAudio.cpp:365: error: no ‘unsigned int RtApi::getStreamSampleRate()’ member function declared in class ‘RtApi’
rtaudio/RtAudio.cpp: In member function ‘virtual bool RtApiAlsa::probeDeviceOpen(unsigned int, RtApi::StreamMode, unsigned int, unsigned int, unsigned int, RtAudioFormat, unsigned int*, RtAudio::StreamOptions*)’:
rtaudio/RtAudio.cpp:5835: error: ‘RTAUDIO_SCHEDULE_REALTIME’ was not declared in this scope
rtaudio/RtAudio.cpp:5837: error: ‘struct RtAudio::StreamOptions’ has no member named ‘priority’
make: *** [rtaudio/RtAudio.o] Error 1
[sun@example proteaAudio_src_090204]$ 


Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> require("proAudioRt");
    stdin:1: module 'proAudioRt' not found:
     no field package.preload['proAudioRt']
     no file './proAudioRt.lua'
     no file '/usr/share/lua/5.1/proAudioRt.lua'
     no file '/usr/share/lua/5.1/proAudioRt/init.lua'
     no file '/usr/lib/lua/5.1/proAudioRt.lua'
     no file '/usr/lib/lua/5.1/proAudioRt/init.lua'
     no file './proAudioRt.so'
     no file '/usr/lib/lua/5.1/proAudioRt.so'
     no file '/usr/lib/lua/5.1/loadall.so'
    stack traceback:
     [C]: in function 'require'
     stdin:1: in main chunk
     [C]: ?

1 Ответ

1 голос
/ 24 декабря 2010

Lua пытается сказать вам, что он не может найти реализацию модуля "proAudioRt", которую он пытался найти в разных местах. Первый блок мест - это различные попытки загрузки реализации в Lua, затем несколько попыток в различных общих объектных файлах, которые могли содержать модуль. Поскольку ни одно из этих мест не работает, require завершается ошибкой.

Ничего не работает, потому что вы на самом деле не создали .so, содержащий модуль.

Вам нужно исправить все ошибки компиляции и линковки, чтобы вы собрали proAudioRt.so. Обратите внимание, что для того, чтобы фактически содержать модуль Lua, он должен иметь вызываемую точку входа C с именем luaopen_proAudioRt() с подписью

LUALIB_API int luaopen_proAudioRt(lua_State *L);

Ожидается, что эта функция создаст таблицу модуля, снабдив ее элементами, содержащими функции модуля. Для этого удобна функция luaL_register().

В вики пользователей Lua есть раздел о привязке к Lua , который также должен быть полезен.

...