Суббота, 21.12.2024, 19:21 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Волк-1024, Anton93, xXxSh@dowxXx  
Программа откзывается подгружать процедуру из dll
Anton93Дата: Воскресенье, 12.05.2013, 22:05 | Сообщение # 1
Продвинутый
Зарегистрирован: 06.01.2010
Группа: Модераторы
Сообщений: 320
Статус: Offline
Сабж: имеется программа в двух частях. EXE и DLL файлы.
EXE'шка распаковала DLL'ку из себя и начинает ее (библиотеку) подгружать, чтобы выполнить процедуру из нее.
Вот тут началась сама проблема. никакими путями я это сделать не могу.
Сначала пробовал с помощью rundll32 (через winexec) - выдавало runtime ошибку.
Пробовал через динамическую загрузку (Loadlibrary) - выдает ошибку адреса.
Библиотека полностью рабочая. Процедура из нее запускается простым батником и работает. Но вот из приложения никак. Даже баник не помог. Не пойму в чем проблема.
Прикладываю скрины для наглядности.

Прикрепления: 2471831.png (4.1 Kb) · 7164725.png (9.3 Kb)


ICQ: 41896

Сообщение отредактировал Anton93 - Воскресенье, 12.05.2013, 22:07
 
VolfДата: Четверг, 16.05.2013, 12:57 | Сообщение # 2
Частый гость
Зарегистрирован: 11.04.2013
Группа: Пользователи
Сообщений: 41
Статус: Offline
код длл,в студию!
По другому тебе никто не сможет помочь.
Уверен ты с экспортом намудрил
 
Anton93Дата: Пятница, 17.05.2013, 19:41 | Сообщение # 3
Продвинутый
Зарегистрирован: 06.01.2010
Группа: Модераторы
Сообщений: 320
Статус: Offline
подчеркну, через батник запущенный вручную rundll32 видит процедуру и выполняет
Код
library core;

uses windows;

{$SETPEFLAGS IMAGE_FILE_RELOCS_STRIPPED or IMAGE_FILE_DEBUG_STRIPPED}

procedure install();

begin
// тут тело
end;

exports
    install name 'install';

begin

end.


ICQ: 41896

Сообщение отредактировал Anton93 - Пятница, 17.05.2013, 19:42
 
Волк-1024Дата: Суббота, 18.05.2013, 14:59 | Сообщение # 4
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
Цитата (Anton93)
выдает ошибку адреса.

Естественно.

Цитата (Anton93)
IMAGE_FILE_RELOCS_STRIPPED

В библиотеках ни в коем случае нельзя удалять релок-секцию! Без неё она не сможет загрузится по адресу отличному от ImageBase.


Pascal, C\C++, Assembler, Python

Сообщение отредактировал Волк-1024 - Суббота, 18.05.2013, 15:01
 
Anton93Дата: Суббота, 08.06.2013, 17:04 | Сообщение # 5
Продвинутый
Зарегистрирован: 06.01.2010
Группа: Модераторы
Сообщений: 320
Статус: Offline
Волк-1024, не помогло. всеравно бьет рантайм. почитай внимательно первый пост. если я запускаю 'от руки' батником ее, то она работает. она именно не хочет работать именно с моим приложением. причем даже если создать батник и программно ее от туда запустить

Добавлено (08.06.2013, 17:04)
---------------------------------------------
проблема решена. сама библиотека обращалась к еще не разблокированным ресурсам в системе, отсюда шел крах всего модуля.
# close


ICQ: 41896
 
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz