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

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

12.12.2012, 21:14. Показов 7279. Ответов 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
8489 / 6156 / 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
8489 / 6156 / 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
8489 / 6156 / 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
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.12.2012, 22:07
Хз читайте доку... и разбирайтесь с либой

Проект с конверченым по Builder bass.lib RAD2009
Вложения
Тип файла: rar bass24.rar (382.7 Кб, 11 просмотров)
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 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
8489 / 6156 / 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
8489 / 6156 / 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
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru