| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Проблема с загрузкой ДЛЛ |
| Автор: Burka 5.12.2008, 18:51 | ||||
| Пытаюсь загрузить в делфи библиотеку windbr32.dll, написанную на С/С++(вроде с++). Если вызывать функции статическимм методом
И (это важно) если вызывать где нибудь в коде эту функцию то программа вроде как и запускается, но форма не появляется и виснет. Пробовал загружать библиотеку динамически
Эффект примерно такой же, программа виснет после нажатия на кнопку загрузки библиотеки. Проверял с другими длл загружаются без проблем. Подскажите как разобратся в проблеме? в приложении заголовочный сишный файл, если вдруг чем поможет. |
| Автор: bems 5.12.2008, 19:09 |
| вместо safecall попробуй stdcall |
| Автор: Burka 5.12.2008, 20:22 |
| я все перепробовал и cdecl и stdcall и многое другое, результат не изменился. |
| Автор: cemick 6.12.2008, 00:45 |
| после выполнения какого строки виснет форма??? |
| Автор: Burka 6.12.2008, 01:10 | ||
cemick,
|
| Автор: Akella 6.12.2008, 10:07 |
| А может проблема НЕ в способе вызозва библиотеки? |
| Автор: Burka 6.12.2008, 13:54 | ||
Ну если прога виснет в обоих случаях то проблема либо с библиотекой, либо есть проблема загрузки из делфи, я хочу попробовать загрузить с помощью C++ Builder. Хотя по идее функция загрузки все равно одна и таже используется. Надо убедится что это именно в библиотеке проблема, но как это проверить я не знаю. |
| Автор: Christoph 6.12.2008, 17:52 | ||
Попробуй проверку сделать
Кста покажи длл |
| Автор: Burka 6.12.2008, 18:02 | ||
Christoph, проблема в том что любой код после загрузки библиотеки уже Не исполняется. Даже с TRY EXCEPT прога виснет, но ошибки никакой не выдает.
Добавлено через 3 минуты и 41 секунду http://slil.ru/26407098 вот эта длл-ка ~500кб |
| Автор: THandle 6.12.2008, 19:53 |
| У меня эта ваша библиотечка кинула следующее(в аттаче). |
| Автор: Burka 6.12.2008, 21:02 |
| THandle, это хорошо что она ошибки выдает) |
| Автор: Christoph 6.12.2008, 21:36 |
| тут весь прикол в том что ты не можешь загрузить эту dll, пока не будут найдены все импортируемые бибилотеки, глянул список импортируемых библотек: KERNEL32.dll WSOCK32.dll USER32.dll MSVCRT.dll wmeteo32.dll - не хватало этой длл, но всеравно не пашет :( а может быть такое что этот длл зависит от ехешника?! Ничего не пойму.. |
| Автор: Burka 6.12.2008, 22:03 | ||
Врятли, эту библиотеки прислали из москвы, в них функции для работы со специфической метео базой. То есть по идее они как раз для разработки, и не должны к конкретному экзешнику быть привязаны. |
| Автор: Christoph 6.12.2008, 22:29 |
| Тут один вариант, эта библиотека привязана к ехешнику |
| Автор: Burka 6.12.2008, 22:38 |
| ТО есть он должын быть рядом с библиотекой или нельзя вызвать функции из нее? |
| Автор: MetalFan 6.12.2008, 22:49 |
разве много разных вариантов декларации функции?)) |
| Автор: Christoph 6.12.2008, 22:52 |
| Наверное должен быть запущен ехешник которые работает с библиотекой wmeteo32.dll , затем уже подключать windbr32, а у тебя есть ехешник? Потому что я читал этот wmeteo32.dll идет в каком то пакете... |
| Автор: MetalFan 6.12.2008, 23:16 |
| библиотека windbr32 грузится норм... что я не так делаю? ) |
| Автор: Burka 6.12.2008, 23:30 | ||||
Вроде еще две =)
вот тоже хотелось бы знать, а код такой же? |
| Автор: Akella 7.12.2008, 01:14 |
не удержался от оффтопа Добавлено через 1 минуту и 35 секунд А описания к ней не выслали? |
| Автор: Burka 7.12.2008, 01:55 | ||
Есть подробное описание функций библиотеки. Особеностей подключения и тп нету. Вот список файлов который был с этими библиотеками: windbr32.dll windbr32.doc (не понятный текст в не понятной кодирофке =) ) windbr32.lib вот мне кажется что она нужна для библиотеки но использовать ее я так понимаю тока из си получится, мб я ошибаюсь. windrexp.h wmeteo32.dll wmeteo32.lib |
| Автор: MetalFan 7.12.2008, 10:45 |
код из первого твоего поста. вощем поковыряв библиотеку пришел к выводу (на сколько мне позволяют знания асм-а), что при загрузке библиотеки создается доп.поток, в котором что-то происходит и этого чего-то ждет поток, загружающий библиотеку. соотв. LoadLibrary не вернется, пока эта операция не закончится.... но после 3-4 запусков с попыткой расковырять, что там происходит, библиотека стала грузится без задержки. вот. может грузить библиотеку в доп.потоке? шоб основной не "тупил" пока там что-то проинициализируется.... |
| Автор: CodeMonkey 7.12.2008, 13:54 |
Лучше бы вы вот это выложили. Это ж доки. |
| Автор: Burka 7.12.2008, 14:30 |
| MetalFan, можно попробовать, только я с потоками не имел дела, можно пример кода выложить? CodeMonkey, вот этот док, если честно на мануал не очень похоже |
| Автор: bems 7.12.2008, 17:14 |
| это документ новой версии ворда. на сайте мелкософта есть надстройка для старых версий, чтобы открывать новые |
| Автор: Burka 7.12.2008, 17:40 | ||
а поподробнее можно, ссылку или хотя бы название этой надстройки. А то я ничего такого не нашел. |
| Автор: bems 7.12.2008, 17:55 |
| нету у меня ссылки и надстройку установил и забыл. Вот тебе документ, которому я сделал "сохранить как". Вроде все нормально сохранилось, но ворд ругался что могут быть потери, так что извини коль что не так |
| Автор: Burka 7.12.2008, 18:22 |
| bems, спасибо. Это как раз то описание функций о котором я говорил, тока оно в распечатанном виде у меня было. |
| Автор: Burka 8.12.2008, 12:56 |
| Попробовал загрузить в отдельном потоке, программа повисела минуту и выдала ошибку "HASP Driver not installed or old Driver version (-100)" MetalFan, раз у тебя загрузилась без проблем значит у тебя есть этот драйвер? И что это вообще за драйвер такой? щас нет возможности погуглить. |
| Автор: Akella 8.12.2008, 14:09 |
вооооот где собака порылась... библиотека ищет ключ защиты HASP не знаешь что такое? http://www.aladdin.com/support/hasp/enduser.aspx - это для йвер для ключа, типа как у 1С-ки Добавлено через 56 секунд А что же это тебе из Москвы прислали библиотеку... доку... а ключ и не прислали |
| Автор: Burka 8.12.2008, 14:43 | ||
Меня больше интересует как библиотека у MetalFan'a она загрузилась Присылали не мне и уже давно, а я тока с файлами разбираюсь. Ну хоть теперь понятно в чем проблема, будем разбираться. |
| Автор: MetalFan 8.12.2008, 15:05 |
| Burka, фиг знает, как загрузилась... никаких обращений к хаспам не заметил, даже эмулятор не стоит, не то, что ключ |
| Автор: Akella 8.12.2008, 22:24 |
| Значит скажи этим москвичам, чтобы они предусмотрели показ ошибки с нормальным текстом. |
| Автор: Shaian 28.1.2011, 07:35 |
| Ура!!! Нашел людей кто сталкивался с этим чудом программерской мысли Windbr32.dll. Оживляю тему. Помогите кто может. Функция MdbGetData из этой dll. Вот описание этой функции: MdbGetData (hDB, lpdbData) : bFound Назначение С помощью функции MdbGetData можно просмотреть все данные из отобранной записи, соответствующие заказу на данные. Сразу после вызовов функций MdbNext или MdbDataReset функция MdbGetData начинает просмотр записи с самого начала. Последующие вызовы MdbGetData продолжают просмотр записи. Параметры hDB - идентификатор сессии доступа, lpdbData - длинный указатель на структуру типа MDBDATA, в которой функция заполнит поля pname - имя параметра, value - его значение, check - сведения о контроле значения параметра и diff - поправка к значению параметра. Результат Если при очередном вызове MdbGetData будет достигнут конец записи, то функция вернет FALSE и структура, на которую указывает lpdbData, не будет заполнена. Если данные отобраны, то возвращается TRUE. Ситуация такая, если данных в записи нет то функция возвращает false и все в порядке, но если запись не пустая то прога вылетает. В чем собака порылась? Приведите кто может плиз, пример рабочего кода с этой функцией. |
| Автор: Juiko 5.10.2011, 12:12 |
| ой, и Вы тоже с этим ужасом столкнулись))) мне тут выдали пару дней назад дописывать прогу..программа работет где угодно, кроме моего компьютера..и всё на эти dll'ки ругается... |