Не цепляется внешняя библиотека bass
|
|
mashakovmarat | Дата: Среда, 08.05.2019, 15:37 | Сообщение # 1 |
Сержант
Группа: Пользователи
Сообщений: 36
Статус: Offline
| Здравствуйте.
После компиляции входящего в комплект поставки файла demo.bas (пример работы со звуком через библиотеку bass) ожидаемо получаю demo.exe. Никаких претензий на этом этапе нет. Однако уже пуска exe-файла получаю ошибку "Приложению не удалось запуститься, поскольку BASS.dll не был найден." И т.д.
В /inc есть bass.bi, в /lib/win32 - libbass.dll. Где он ищет bass.dll непонятно.
Прошу подсказать, что делаю не так. Спасибо.
|
|
| |
haav | Дата: Среда, 08.05.2019, 17:33 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Статус: Offline
| Привет!
Положи BASS.dll рядом с исполняемым файлом demo.exe (в той же папке).
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
mashakovmarat | Дата: Среда, 08.05.2019, 19:01 | Сообщение # 3 |
Сержант
Группа: Пользователи
Сообщений: 36
Статус: Offline
| Цитата haav ( ) Положи BASS.dll рядом с исполняемым файлом demo.exe (в той же папке).Я /lib/win32/libbass.dll, про который я писал ранее, это оказался libbass.dll.a, таким образом, bass.dll у меня нет. Скачал библиотеку bass с Un4seen, там несколько bass.dll, взял тот, что в корне - он win32. Положил его в ту же папку, что и demo.bas. По-новой скомпилировал demo.bas. После пуска demo.exe в терминале показалось нечто вроде меню (нажмите такую клавишу, нажмите другую клавишу), а под меню была одна строчка служебной телеметрии "Music position Order 65535 Row 65535 (-1 second)". Звука не было. ESC для выхода из demo.exe отработал )) как надо - вышел. Пока не вник, что fbc делает с файлом libbass.dll.a, возможно переколдовывает его bass.dll ??? Может мне что-то нужно сделать с libbass.dll.a ??
|
|
| |
haav | Дата: Среда, 08.05.2019, 19:48 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Статус: Offline
| Только что скачал где и ты BASS.dll , положил в папку с исполняемым файлом и все работает. Звуковые файлы точно лежат в нужной папке? В исходнике путь до файлов ставится относительно EXE-шника:
ExePath & "/../data/example.mo3" ExePath & "/../data/example1.ogg" ExePath & "/../data/example2.ogg"
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
mashakovmarat | Дата: Среда, 08.05.2019, 20:03 | Сообщение # 5 |
Сержант
Группа: Пользователи
Сообщений: 36
Статус: Offline
| Спасибо большое. Заиграло )) Чтобы более-менее окончательно закрепить, выходит, что при подключении внешней библиотеки fbc требует соответствующий .bi в /inc, соответствующий(ие) .a в /lib/win32 и саму .dll в том же месте, что и .exe.
P.S. Насчет путей
Цитата haav ( ) ExePath & "/../data/example.mo3"ExePath & "/../data/example1.ogg" ExePath & "/../data/example2.ogg" это описано в самой библиотеке? или, допустим, data-папку можно кинуть вместе с .dll, ну и, соответственно, изменить пути.
|
|
| |
haav | Дата: Среда, 08.05.2019, 21:15 | Сообщение # 6 |
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Статус: Offline
| Цитата fbc требует соответствующий .bi в /inc
необязательно , просто разработчики уже положили данные заголовки в поставку компилятора, поэтому нам меньше "телодвижений". А так вообще их можно загружать откуда угодно, это ведь всего лишь часть исходника с описанием констант , деклараций и пр.
Цитата соответствующий(ие) .a в /lib/win32
Файлы dll.a - это связующие библиотеки и их наличие может потребоваться только на этапе компиляции , когда под рукой нет реальной библиотеки .dll или .a
Ты можешь провести эксперимент:
- Переименовать или временно удалить файл libbass.dll.a
- Положить рядом с исходником (файлом demo.bas) библиотеку bass.dll
- Скомпилировать и запустить ; все должно работать
Цитата это описано в самой библиотеке? или, допустим, data-папку можно кинуть вместе с .dll, ну и, соответственно, изменить пути.
звуковые файлы можно загружать из любого места , главное правильно прописать путь к ним в исходнике (в данном случае в файле demo.bas).
DLL файлы при статической линковке можно загружать (касается только платформы Windows, на Linux свои заморочки):
- из папки с исполняемым файлом EXE
- из глобального системного каталога (обычно C:\Windows\System32)
- из глобального каталога , описанного в переменных средах (переменная PATH)
Есть еще динамическая линковка , там можно загружать dll из любой папки, но придется самому прописывать прототипы функций.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
DarkDemon | Дата: Четверг, 09.05.2019, 06:19 | Сообщение # 7 |
Полковник
Группа: Друзья
Сообщений: 188
Статус: Offline
| mashakovmarat, с какой целью вам библиотека bass? Во-первых она дорогущая и для лиц. чистоты вы создадите себе проблему в будущем, а во-вторых для всякого разного, что несложно озвучить(презентаций, игр) есть варианты попроще про которые Стас уже говорил: 1) FBSound 2) Squall
Для того, что посложнее это руками кодить MME, DirectSound и ASIO. MME из них самое простое, вкуривается примерно за неделю.
Сообщение отредактировал DarkDemon - Четверг, 09.05.2019, 06:20 |
|
| |
mashakovmarat | Дата: Четверг, 09.05.2019, 12:50 | Сообщение # 8 |
Сержант
Группа: Пользователи
Сообщений: 36
Статус: Offline
| Цитата haav ( ) Файлы dll.a - это связующие библиотеки и их наличие может потребоваться только на этапе компиляции , когда под рукой нет реальной библиотеки .dll или .a Буду иметь ввиду. Спасибо.
Цитата DarkDemon ( ) с какой целью вам библиотека bass? Эта библиотека не "идея фикс", просто на ее примере хотел понять механизм подключения внешних библиотек. А она звуковая, результат сразу понятен - либо все хорошо, либо все нехорошо.
Думаю каждая следующая библиотека может быть частным случаем, поэтому, с вашего позволения, возможно буду мучать вопросами. Надеюсь справлюсь сам.
Спасибо большое за помощь.
|
|
| |
|