Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с загрузкой ДЛЛ 
V
    Опции темы
Burka
Дата 5.12.2008, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



Пытаюсь загрузить в делфи библиотеку windbr32.dll, написанную на С/С++(вроде с++).

Если вызывать функции статическимм методом
Код

Function MdbOpen(hWnd:Thandle):Thandle; safecall; external 'windbr32';

И (это важно) если вызывать где нибудь в коде эту функцию то программа вроде как и запускается, но форма не появляется и виснет.

Пробовал загружать библиотеку динамически
Код

Type
 TMdbOpen = function(hWnd:Thandle):Thandle;
...

procedure TForm1.Button2Click(Sender: TObject);
var
  DLLInstance : THandle;
  MdbOpen : TMdbOpen;
begin
{ загружаем DLL }
DLLInstance := LoadLibrary(Pchar(Edit3.Text));
{ получаем указатель }
//@MdbOpen := GetProcAddress(DLLInstance, 'MdbOpen');
{ вызываем процедуру на выполнение }
//HDB:=MDBOpen(Hwnd);
{ выгружаем DLL из оперативной памяти }
FreeLibrary(DLLInstance);
end;

Эффект примерно такой же, программа виснет после нажатия на кнопку загрузки библиотеки. Проверял с другими длл загружаются без проблем.
Подскажите как разобратся в проблеме? 

в приложении заголовочный сишный файл, если вдруг чем поможет.


Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  WINDBREXP.H 8,58 Kb


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
bems
Дата 5.12.2008, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



вместо safecall попробуй stdcall


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Burka
Дата 5.12.2008, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



я все перепробовал и cdecl и stdcall и многое другое, результат не изменился.


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
cemick
Дата 6.12.2008, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 6



после выполнения какого строки виснет форма???
PM MAIL WWW   Вверх
Burka
Дата 6.12.2008, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



cemick,
Код

DLLInstance := LoadLibrary(Pchar(Edit3.Text));



--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
Akella
Дата 6.12.2008, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



А может проблема НЕ в способе вызозва библиотеки?
PM MAIL   Вверх
Burka
Дата 6.12.2008, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



Цитата
А может проблема НЕ в способе вызозва библиотеки?

Ну если прога виснет в обоих случаях то проблема либо с библиотекой, либо есть проблема загрузки из делфи, я хочу попробовать загрузить с помощью C++ Builder. Хотя по идее функция загрузки  все равно одна и таже используется.
Надо убедится что это именно в библиотеке проблема, но как это проверить я не знаю.




--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
Christoph
Дата 6.12.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 1
Всего: 11



Попробуй проверку сделать

Код

DLLInstance := LoadLibrary(Pchar(Edit3.Text));
if DLLInstance >=32 then
...
else // Иначе ошибка



Кста покажи длл

Это сообщение отредактировал(а) Christoph - 6.12.2008, 17:59


--------------------
user posted image
PM MAIL ICQ   Вверх
Burka
Дата 6.12.2008, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



Christoph, проблема в том что любой код после загрузки библиотеки уже Не исполняется. Даже с TRY EXCEPT прога виснет, но ошибки никакой не выдает.
Код

try
{ загружаем DLL }
DLLInstance := LoadLibrary(Pchar(Edit3.Text));
except
SHowMessage('Это сообщение не выскакивает');
end;
SHowMessage('и это тоже');


Добавлено через 3 минуты и 41 секунду
http://slil.ru/26407098 вот эта длл-ка ~500кб

Это сообщение отредактировал(а) Burka - 6.12.2008, 18:03


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
THandle
Дата 6.12.2008, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



У меня эта ваша библиотечка кинула следующее(в аттаче).

Присоединённый файл ( Кол-во скачиваний: 32 )
Присоединённый файл  error.JPG 77,97 Kb
PM   Вверх
Burka
Дата 6.12.2008, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



THandle, это хорошо что она ошибки выдает)

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  wmeteo32.dll 112,00 Kb


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
Christoph
Дата 6.12.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 1
Всего: 11



тут весь прикол в том что ты не можешь загрузить эту dll, пока не будут найдены все импортируемые бибилотеки, глянул список импортируемых библотек: 

KERNEL32.dll
WSOCK32.dll
USER32.dll
MSVCRT.dll
wmeteo32.dll - не хватало этой длл, но всеравно не пашет :( а может быть такое что этот длл зависит от ехешника?!

Ничего не пойму..


--------------------
user posted image
PM MAIL ICQ   Вверх
Burka
Дата 6.12.2008, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



Цитата

а может быть такое что этот длл зависит от ехешника?!

Врятли, эту библиотеки прислали из москвы, в них функции для работы со специфической метео базой. То есть по идее они как раз для разработки, и не должны к конкретному экзешнику быть привязаны.


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
Christoph
Дата 6.12.2008, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 1
Всего: 11



Тут один вариант, эта библиотека привязана к ехешнику smile других вариантов нет


--------------------
user posted image
PM MAIL ICQ   Вверх
Burka
Дата 6.12.2008, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



ТО есть он должын быть рядом с библиотекой или нельзя вызвать функции из нее?


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0584 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.