The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Handling DLL lack"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Handling DLL lack"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 20-Окт-04, 19:34  (MSK)
Доброе время суток, господа. Столкнулся с проблемой в Windows (извиняюсь за оффтопик, но может быть кто-то знает), на этапе выполнения невозможно найти DLL, необходимую для работы программы, выдается соответствующее окошко. Все бы хорошо, но мне нужно без окошка, просто вернуть exit code и все. Знаю, что это можно реализовать прямо в этом бинарнике, но как?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Handling DLL lack"
Сообщение от hatta Искать по авторуВ закладки(ok) on 20-Окт-04, 21:17  (MSK)
Может быть LoadLibrary?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Handling DLL lack"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 20-Окт-04, 21:20  (MSK)
>Может быть LoadLibrary?

Да нет, у меня программа собирается и линкуется с библиотекой статически ...
А на машине, где эта программа выполняется, некоторых библиотек нет. Так вот существует способ как то это проверить в исполняемой программе до возникновения ошибки. Но какой - не пойму. Что-то с SEH связано ...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Handling DLL lack"
Сообщение от qq Искать по авторуВ закладки(??) on 20-Окт-04, 22:37  (MSK)
>>Может быть LoadLibrary?
>
>Да нет, у меня программа собирается и линкуется с библиотекой статически ...
>
>А на машине, где эта программа выполняется, некоторых библиотек нет. Так вот
>существует способ как то это проверить в исполняемой программе до возникновения
>ошибки. Но какой - не пойму. Что-то с SEH связано ...
>

Ошибка происходит не в программе, а в PE загрузчике, который не может найти нужный файл чтобы замаппить его в адресное пространство процесса

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Handling DLL lack"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 20-Окт-04, 22:39  (MSK)
>>>Может быть LoadLibrary?
>>
>>Да нет, у меня программа собирается и линкуется с библиотекой статически ...
>>
>>А на машине, где эта программа выполняется, некоторых библиотек нет. Так вот
>>существует способ как то это проверить в исполняемой программе до возникновения
>>ошибки. Но какой - не пойму. Что-то с SEH связано ...
>>
>
>Ошибка происходит не в программе, а в PE загрузчике, который не может
>найти нужный файл чтобы замаппить его в адресное пространство процесса

Ты прав, но так происходит в UNIX и ничего с этим не поделать. А в Windows существует путь обхода ... Structured Exception Handling (SEH). Вопрос только как это организовать?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Handling DLL lack"
Сообщение от qq Искать по авторуВ закладки(??) on 20-Окт-04, 22:35  (MSK)
>Доброе время суток, господа. Столкнулся с проблемой в Windows (извиняюсь за оффтопик,
>но может быть кто-то знает), на этапе выполнения невозможно найти DLL,
>необходимую для работы программы, выдается соответствующее окошко. Все бы хорошо, но
>мне нужно без окошка, просто вернуть exit code и все. Знаю,
>что это можно реализовать прямо в этом бинарнике, но как?

Вручную грузить библиотеку через LoadLibrary и получать адреса ф-ций через GetProcAddress

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Handling DLL lack"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 20-Окт-04, 22:38  (MSK)
>>Доброе время суток, господа. Столкнулся с проблемой в Windows (извиняюсь за оффтопик,
>>но может быть кто-то знает), на этапе выполнения невозможно найти DLL,
>>необходимую для работы программы, выдается соответствующее окошко. Все бы хорошо, но
>>мне нужно без окошка, просто вернуть exit code и все. Знаю,
>>что это можно реализовать прямо в этом бинарнике, но как?
>
>Вручную грузить библиотеку через LoadLibrary и получать адреса ф-ций через GetProcAddress

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

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Handling DLL lack"
Сообщение от sas emailИскать по авторуВ закладки(ok) on 21-Окт-04, 02:18  (MSK)
>Доброе время суток, господа. Столкнулся с проблемой в Windows (извиняюсь за оффтопик,
>но может быть кто-то знает), на этапе выполнения невозможно найти DLL,
>необходимую для работы программы, выдается соответствующее окошко. Все бы хорошо, но
>мне нужно без окошка, просто вернуть exit code и все. Знаю,
>что это можно реализовать прямо в этом бинарнике, но как?

Взгляните на

http://www.microsoft.com/msj/1298/win32/win321298.aspx

Удачи
--- sas

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Handling DLL lack"
Сообщение от dimus Искать по авторуВ закладки(??) on 21-Окт-04, 08:09  (MSK)
По моему тут легче будет изменить дизайн. На загрузку DLL потребуется написать три строчки кода. Плюс пара строчек на каждую функцию. А на отлавливание такой проблемы нестандартными средствами времени уйдет гораздо больше, да и насколько хорошо это будет работать? А лучше всего решать проблему на этапе _УСТАНОВКИ_.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Handling DLL lack"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 21-Окт-04, 11:17  (MSK)
>По моему тут легче будет изменить дизайн. На загрузку DLL потребуется написать
>три строчки кода. Плюс пара строчек на каждую функцию. А на
>отлавливание такой проблемы нестандартными средствами времени уйдет гораздо больше, да и
>насколько хорошо это будет работать? А лучше всего решать проблему на
>этапе _УСТАНОВКИ_.

С этим я совершенно согласен) Но ничего не могу поделать, ах уж эти коммерческие проекты :-(

  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Handling DLL lack"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 21-Окт-04, 12:08  (MSK)
>
>Взгляните на
>
>http://www.microsoft.com/msj/1298/win32/win321298.aspx
>
>Удачи
>--- sas

Добрый день, SAS! DelayLoad для DLL это то, что нужно! Спасибо!

  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Handling DLL lack"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 21-Окт-04, 14:54  (MSK)
>Доброе время суток, господа. Столкнулся с проблемой в Windows (извиняюсь за оффтопик,
>но может быть кто-то знает), на этапе выполнения невозможно найти DLL,
>необходимую для работы программы, выдается соответствующее окошко. Все бы хорошо, но
>мне нужно без окошка, просто вернуть exit code и все. Знаю,
>что это можно реализовать прямо в этом бинарнике, но как?

Итак, кого в будущем заинтересует эта тема, ответ прост...

Читаем:

http://www.microsoft.com/msj/1298/win32/win321298.aspx
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcconLinkerSupportForDelayedLoadingOfDLLs.asp
http://bdn.borland.com/article/0,1410,28515,00.html

Если что, спрашивайте!

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру