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

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

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

Проект с конверченым по Builder bass.lib RAD2009
Вложения
Тип файла: rar bass24.rar (382.7 Кб, 11 просмотров)
0
Эксперт С++
 Аватар для Avazart
8483 / 6150 / 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
8483 / 6150 / 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
8483 / 6150 / 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
Ответ Создать тему
Новые блоги и статьи
Трассировка корутин Kotlin с OpenTelemetry
mobDevWorks 14.07.2025
Асинхронное программирование меняет правила игры, особенно когда речь заходит о трассировке операций. В Kotlin с его корутинами эта проблема приобретает особый оттенок, который я хотел бы детально. . .
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru