Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/35: Рейтинг темы: голосов - 35, средняя оценка - 4.91
 Аватар для BARS1991
23 / 15 / 0
Регистрация: 16.11.2009
Сообщений: 332

Ошибка доступа к памяти, ошибка компонентов .bpl

12.12.2012, 21:14. Показов 6941. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Использую в проекте библиотеку bass.dll. И при работе с ней у билдера часто возникают ошибки. Либо ошибка доступа к памяти, либо ошибка компонентов .bpl. Ошибка доступа памяти периодически возникает при включении bass.dll.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
HWND win=NULL;
 
HRECORD chan;   // recording channel
 
void Error(const char *es)
{
    char mes[200];
    sprintf(mes,"%s\n(error code: %d)",es,BASS_ErrorGetCode());
    MessageBox(win,mes,0,0);
}
 
BOOL CALLBACK DuffRecording(HRECORD handle, const void *buffer, DWORD length, void *user)
{
    return TRUE; // continue recording
}
 
static BOOL Initialize()
{
 if (!BASS_RecordInit(-1)) {
    Error("Can't initialize device");
    return FALSE;
 }else{
    chan = BASS_RecordStart(44100, 2, 0, &DuffRecording, 0);
 }
    return TRUE;
}
А именно при вызове функции Initialize();. При выключении программы происходит остановка bass.dll
C++
1
2
3
4
  BASS_Stop();
  BASS_RecordFree();
  BASS_StreamFree(chan);
  BASS_Free();
Несмотря на это, билдер выдает ошибку компонентов .bpl. Если запускать программу отдельно от билдера, никаких ошибок нет. Пробовал и на 2007 и на 2009 билдере. Библиотек последней версии. В чем может быть проблема?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.12.2012, 21:14
Ответы с готовыми решениями:

Библиотека Bpl. Ошибка Cannot convert при сборке .bpl
Добрый день. Есть проект для создания bpl написанный на Embracadero Rad Studio 2010, необходимо перевести его на Embracadero Rad...

Ошибка доступа к памяти
При нескольких проходах выдает ошибку доступа к памяти int hod_comp(int count) { srand(time(0)); count = rand() % 9+1 ; ...

Ошибка доступа к памяти
Я только учусь работать с Lazarus. Объясните, пожалуйста, причину возникновения и (или) решение этой проблемы. Поймал ошибку...

31
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 21:39
Студворк — интернет-сервис помощи студентам
Ну а я о чем ?

Добавлено через 9 минут
Собственно у меня нормально работает...а вы нам просто парите мозг

А c lib что-то, то неправильно сконвертился

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
typedef void __cdecl (*dll_func1)(int device, DWORD freq, DWORD flags, HWND win, const GUID *dsguid);
typedef void __cdecl (*dll_func2)();
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 HMODULE hDLL = LoadLibrary("bass.dll");
 
 if (!hDLL) {
        ShowMessage("Невозможно загрузить bass.dll");
        return;
 }
 
 dll_func1 pBASS_Init = NULL;
 // пытаемся найти в таблице экспорта необходимую нам функцию
 pBASS_Init = (dll_func1)GetProcAddress(hDLL, "BASS_Init");
 
 if (pBASS_Init) pBASS_Init(-1, 44100, 0, NULL, NULL);
 else ShowMessage("!!!");
 
 dll_func2 pBASS_Stop = NULL;
    // пытаемся найти в таблице экспорта необходимую нам функцию
 pBASS_Stop = (dll_func2)GetProcAddress(hDLL, "BASS_Stop");
 
 if (pBASS_Stop)  pBASS_Stop();
 else ShowMessage("!!!");
 
 FreeLibrary(hDLL);
}
//---------------------------------------------------------------------------
0
 Аватар для BARS1991
23 / 15 / 0
Регистрация: 16.11.2009
Сообщений: 332
14.12.2012, 21:46  [ТС]
Ну так в программе работать не будет. BASS_Stop вызывается в самом конце работы с программой. Т.е. запустили программу, прошел BASS_Init();, вызвали еще кучу необходимых нам функций. А вот когда программу закрыли, в событии OnClose(); вызывается BASS_Stop(); (часто еще BASS_Free(); и т.п., зависит от того, что мы вызывали до этого). А у вас сразу после запуска BASS происходит его остановка.
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 21:56
Ну вот приехали ... впишите между ними другие ф-ции и работайте...
0
 Аватар для BARS1991
23 / 15 / 0
Регистрация: 16.11.2009
Сообщений: 332
14.12.2012, 21:58  [ТС]
Так программа может и час и два работать, а эти функции вызываться не один десяток раз. А тут при нажатии кнопки они все по одному разу отработают и BASS остановится. Какой в этом смысл?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 22:03
Смысл в том что количество "стопов" должно соответствовать количеству "инитов" что тут непонятного ?

Добавлено через 2 минуты
Соответствено Init должен вызываться один раз в FormCreate() а Stop один раз в FormClose().
Но в данном случае еще и сама dll подгружается/выгружается поэтому в одной кнопке.
0
 Аватар для BARS1991
23 / 15 / 0
Регистрация: 16.11.2009
Сообщений: 332
14.12.2012, 22:05  [ТС]
Стоп должен быть всего один, при завершении работы программы. BASS_Stop() - остановка всех функций bass.dll
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 22:07
Хз читайте доку... и разбирайтесь с либой

Проект с конверченым по Builder bass.lib RAD2009
Вложения
Тип файла: rar bass24.rar (382.7 Кб, 11 просмотров)
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 22:12
......
0
 Аватар для BARS1991
23 / 15 / 0
Регистрация: 16.11.2009
Сообщений: 332
14.12.2012, 22:27  [ТС]
Ваш проект тоже ошибку выдал при закрытии...
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 22:30
Ну не знаю, значит у вас IDE кривая или руки...
У меня нормально работало специально десяток раз закрывал/открывал
0
 Аватар для BARS1991
23 / 15 / 0
Регистрация: 16.11.2009
Сообщений: 332
14.12.2012, 22:35  [ТС]
IDE штук 5 разных ставил и 2007 и 2009, ошибка везде есть. Скорее 64 бита...
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 22:42
Скорее всего...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.12.2012, 22:42
Помогаю со студенческими работами здесь

Ошибка доступа к памяти
Доброго времени суток! Возникла проблема. Есть класс СТРОКА. В нем перегруженные операторы "-" и сравнения. Вот код. ...

Ошибка доступа к памяти
Приветствую В проге на онкрит ставлю: if paramstr(1)='someparam' then begin MST:=TmemoryStream.Create; ...

Ошибка доступа записи памяти
Здравствуйте,возникла проблема с циклом: как только начинается выполнения цикла,то возникает ошибка доступа записи памяти.Если что, в...

Структуры - ошибка доступа к памяти
Вроде все написано правильно, но компилер ругается при попытке создать второй елемент... Попрошу не пугатся немецкого, имена функций все...

Почему происходит ошибка доступа к памяти?
GetK32: __1: cmp byte ptr ,00h jz WeFailed cmp word ptr ,"ZM" jz CheckPE...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru