0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 189
1

Пытаюсь сделать динамическую загрузку dll. Dll-библиотека не подает признаков жизни

10.09.2017, 03:46. Показов 1579. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. У меня такое дело, я пытаюсь создать в своей программе динамическую загрузку dll-библиотеки:
Delphi
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
type
  TApple = procedure;
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
   
  private
    { Private declarations }
  public
    { Public declarations }
    Apple : TApple;    
    DLLName : THandle;
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
DLLName := LoadLibrary('DLLName.dll');
if DLLName <> 0 then
begin
@Apple := GetProcAddress(DLLName, 'Apple');
Apple;
end
else
ShowMessage('dll not found');
end;
Где Apple - это имя процедуры, из dll-библиотеки. Когда я запускаю программу, все норм, работает без ошибок. Но сама dllка, не подает признаков жизни, т.е. собственно ее код не выполняется.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2017, 03:46
Ответы с готовыми решениями:

Не подает признаков жизни hdd
Жесткий диск начал сильно шуметь, затем, через некоторое время, ПК самопроизвольно перезагрузился и...

Монитор не подает признаков жизни
Монитор начал включатся на несколько секунд дольше после каждого выключения компьютера.в итоге он...

Ноутбук не подаёт признаков жизни
Сестра говорит что ударила по его по боку и он сразу потух и и теперь не подаёт не каких признаков...

Компьютер не подает признаков жизни.
Здравствуйте, помогите мне решить маленькую проблему. Утром включил как всегда свой домашний камп,...

12
4174 / 1824 / 218
Регистрация: 06.10.2010
Сообщений: 4,111
10.09.2017, 05:30 2
Видимо не отрабатывает условие.
Delphi
1
if DLLName <> 0 then
То есть dll не загружается. Попробуй указать полный путь к dll.
0
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 189
10.09.2017, 18:47  [ТС] 3
Цитата Сообщение от murderer Посмотреть сообщение
То есть dll не загружается. Попробуй указать полный путь к dll.
Я уже пробовала. Без толку. И да, если dll не загружается, программа пишет что она не найдена:
Delphi
1
2
else
ShowMessage('dll not found');
0
Пишу на Delphi...иногда
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
10.09.2017, 18:52 4
Цитата Сообщение от Артемида1996 Посмотреть сообщение
Но сама dllка, не подает признаков жизни, т.е. собственно ее код не выполняется.
как понимается, что код не выполняется? (как должна оповестить функция Apple, что ее код как-то выполнился?)
0
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 189
10.09.2017, 19:13  [ТС] 5
Цитата Сообщение от cotseec Посмотреть сообщение
как понимается, что код не выполняется? (как должна оповестить функция Apple, что ее код как-то выполнился?)
Она должна скачать файл.
0
Пишу на Delphi...иногда
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
10.09.2017, 19:22 6
Цитата Сообщение от Артемида1996 Посмотреть сообщение
Она должна скачать файл.
и не скачивает?

варианты:
источник невалиден;
время скачивания превышает время ожидания (функция не успела скачать, а не найдя файла программа выключается с криком не работает);
не там ищется скачанный файл (не в той папке, в которой ожидается, имхо, стоит в функцию передавать путь, куда складывать результат);
соглашения о вызовах (в библиотеке помечена, например, как stdcall, а в вызывающем коде - нет, хотя при отсутствии передаваемых и возвращаемых данных не особо критично);
в функции попытка использовать Application и его производные;
и т.д. и т.п.

библиотека самописная?
0
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 189
10.09.2017, 19:25  [ТС] 7
Цитата Сообщение от cotseec Посмотреть сообщение
и не скачивает?
варианты:
источник невалиден;
время скачивания превышает время ожидания (функция не успела скачать, а не найдя файла программа выключается с криком не работает);
не там ищется скачанный файл (не в той папке, в которой ожидается, имхо, стоит в функцию передавать путь, куда складывать результат);
соглашения о вызовах (в библиотеке помечена, например, как stdcall, а в вызывающем коде - нет, хотя при отсутствии передаваемых и возвращаемых данных не особо критично);
в функции попытка использовать Application и его производные;
и т.д. и т.п.
библиотека самописная?
Да, не скачивает. С библиотекой все порядке, так как при обычном вызове, не динамическом, она нормально работает. Проблема в самой вызывающей программе.
0
Пишу на Delphi...иногда
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
10.09.2017, 19:29 8
после
Delphi
1
@Apple := GetProcAddress(DLLName, 'Apple');
Apple<>null? (смотри в отладчике)
0
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 189
10.09.2017, 19:54  [ТС] 9
Цитата Сообщение от cotseec Посмотреть сообщение
Apple<>null? (смотри в отладчике)
В смысле?
0
4174 / 1824 / 218
Регистрация: 06.10.2010
Сообщений: 4,111
11.09.2017, 06:56 10
cotseec
Если бы apple было невалидным вылетел бы GP Fault.
0
0 / 1 / 0
Регистрация: 26.11.2016
Сообщений: 189
12.09.2017, 16:53  [ТС] 11
Бамп.
0
Пишу на Delphi...иногда
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
12.09.2017, 19:53 12
murderer, GetProcAddress вернет или действительный адрес или null, при недействительном адресе - исключение, при null - стоит проверить
0
4174 / 1824 / 218
Регистрация: 06.10.2010
Сообщений: 4,111
13.09.2017, 12:59 13
Артемида1996
Выкладывай dll - надо смотреть под отладчиком.
0
13.09.2017, 12:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.09.2017, 12:59
Помогаю со студенческими работами здесь

R9 380 Не подает признаков жизни
Доброго времени суток, недавно мною была куплена видеокарта : R9 380 Sapphire Nitro(бу) ....

Монитор не подаёт признаков жизни
подскажите пожалуйста, как прозванивается шим-контроллер &quot;H606 TOP245YN 36870A&quot; 6 выводов,...

После выключения, ПК не подаёт признаков жизни
Доброго времени суток, столкнулся с такой проблемой... В обед у провайдера здох инет и я до...

usb-флешка не подает признаков жизни
Здравствуйте. В какой бы компьютер не вставлял - никаких признаков жизни флешка не подает :( Если...

CM Samsung WF-F1061, не подает признаков жизни
Здравствуйте! У меня проблемка с CM Samsung WF-F1061: не подает никаких признаков жизни. Стоит...

Brother HL-2140R, не подает признаков жизни
Доброго времени суток. Печатал документы, закончилась бумага, открыл латок чтобы убедиться и пошел...


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

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

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