Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
4952 / 2416 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
1

При выгрузке библиотеки(ДЛЛ) возникает возникает ошибка

02.07.2012, 14:31. Показов 1451. Ответов 12
Метки нет (Все метки)

Здравствуйте!!

Ребята, подскажите, по такому вопросу написал код создания кнопки на форме при подгрзке 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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
typedef void(__stdcall*CREATE_BTN)(TForm*);
HMODULE hMod = NULL;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   hMod = LoadLibraryA("DLL.dll");
    if (!hMod) {
        return;
    }
    CREATE_BTN CreateBtn = reinterpret_cast<CREATE_BTN>(GetProcAddress(hMod,"_CreateButton"));
    if (CreateBtn) {
        CreateBtn(this);
    }
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if (hMod)
    {
      FreeLibrary(hMod);
    }
}
//---------------------------------------------------------------------------
Библиотека подгружается и кнопка создаётся но как тольеко я закрываю форму, то вылетает вот такая вот ошибка (см. скриншот)

Можно ли от неё избавиться от этой ошибки? Работаю в C++ Builder 6 версии.

Заранее благодарен за ответ
Миниатюры
При выгрузке библиотеки(ДЛЛ) возникает возникает ошибка  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.07.2012, 14:31
Ответы с готовыми решениями:

Возникает ошибка при компиляции C++ Builder 2010
Здравствуйте, возникает такая ошибка при компиляции, при чем билдер не выделяет ни одной строки,...

При выборе листа в excel возникает ошибка: Assertion Failed
В с++ builder 10 пробую вывести в excel информацию. Начал с малого, создал книгу как написано на...

Возникает ошибка при компиляции приложения C2678
Вообщем-то всем привет, есть задача сделать приложение, которое сможет отсортировать список, это,...

При попытке сделать фильтрацию возникает ошибка
Добрый день. Ситуация такая: подключился к БД созданной в MSAccess. Вывел данные из неё в DBGrid....

12
Практикантроп
4703 / 2614 / 506
Регистрация: 23.09.2011
Сообщений: 5,629
02.07.2012, 14:49 2
может вот так прокатит? if ( FreeLibrary(hMod)) ; (с ожиданием высвобождения)
0
4952 / 2416 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
02.07.2012, 15:28  [ТС] 3
Написал вот так вот

C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
 
if (hMod)
    {
      if (FreeLibrary(hMod));
    }
}
Не помогло
0
Эксперт С++
8297 / 6128 / 613
Регистрация: 10.12.2010
Сообщений: 28,659
Записей в блоге: 30
02.07.2012, 17:06 4
А у тебя случайно не стоит отложеный запуск dll ?

Dynamic-Link Library: Теория + Практика
0
4952 / 2416 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
02.07.2012, 17:08  [ТС] 5
А где он должен вообще стоять?
0
Практикантроп
4703 / 2614 / 506
Регистрация: 23.09.2011
Сообщений: 5,629
02.07.2012, 17:34 6
Цитата Сообщение от Sasha Посмотреть сообщение
А где он должен вообще стоять?
Project Options - Advanced Linker - Delay Load (только вряд ли это повлияет...)
0
Эксперт С++
8297 / 6128 / 613
Регистрация: 10.12.2010
Сообщений: 28,659
Записей в блоге: 30
02.07.2012, 17:35 7
Другой ф-цией выгружается...
0
4952 / 2416 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
02.07.2012, 17:47  [ТС] 8
Цитата Сообщение от nick42 Посмотреть сообщение
Project Options - Advanced Linker - Delay Load (только вряд ли это повлияет...)
Там ничё не стоит

Добавлено через 15 секунд
Всё пусто
0
Эксперт С++
8297 / 6128 / 613
Регистрация: 10.12.2010
Сообщений: 28,659
Записей в блоге: 30
02.07.2012, 17:48 9
А библиотека COM типа ? Там может свои особенности?
0
4952 / 2416 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
02.07.2012, 17:49  [ТС] 10
Информацию я брал отсюда
Создать DLL, которая создаст кнопку на форме
0
Эксперт С++
8297 / 6128 / 613
Регистрация: 10.12.2010
Сообщений: 28,659
Записей в блоге: 30
02.07.2012, 17:51 11
Если поместить
C++
1
2
3
4
if (hMod)
    {
      if (FreeLibrary(hMod));
    }
В кнопку то работает( а не в OnClose() )?

Да, а еще перед этим можно поробывать уничтожить кнопку.
0
Практикантроп
4703 / 2614 / 506
Регистрация: 23.09.2011
Сообщений: 5,629
02.07.2012, 17:57 12
Возможно, копать нужно в сторону DLL. Грамотно расписать delete для кнопки.
0
Эксперт С++
8297 / 6128 / 613
Регистрация: 10.12.2010
Сообщений: 28,659
Записей в блоге: 30
02.07.2012, 18:00 13
И я про то...
Поидее достаточно передать в Owner форму.
Но повидимому форма не может удалить кнопку если библиотека выгружена.... ну или как то так.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2012, 18:00

При выгрузке из Excel в Delphi возникает ошибка: ole error 800a03ec
Программа спокойно компилируется, но периодически выскакивает данная ошибка, она может выскочить до...

Если в таблице базы пустая ячейка, то при выгрузке в ListView возникает ошибка
Доброго времени суток, форумчане! Возникли некоторые вопросы при работе с БД. Загружаю в...

Возникает ошибка при OpenWebConfiguration
Здравствуйте подскажите пожалуйста студия в строке : Dim Config As Configuration =...

Возникает ошибка при запросе
package com.example.ks; /** * Created by Denis on 08.09.2016. */ import...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru