Доброе время суток, господа. Столкнулся с проблемой в Windows (извиняюсь за оффтопик, но может быть кто-то знает), на этапе выполнения невозможно найти DLL, необходимую для работы программы, выдается соответствующее окошко. Все бы хорошо, но мне нужно без окошка, просто вернуть exit code и все. Знаю, что это можно реализовать прямо в этом бинарнике, но как?
Может быть LoadLibrary?
>Может быть LoadLibrary?Да нет, у меня программа собирается и линкуется с библиотекой статически ...
А на машине, где эта программа выполняется, некоторых библиотек нет. Так вот существует способ как то это проверить в исполняемой программе до возникновения ошибки. Но какой - не пойму. Что-то с SEH связано ...
>>Может быть LoadLibrary?
>
>Да нет, у меня программа собирается и линкуется с библиотекой статически ...
>
>А на машине, где эта программа выполняется, некоторых библиотек нет. Так вот
>существует способ как то это проверить в исполняемой программе до возникновения
>ошибки. Но какой - не пойму. Что-то с SEH связано ...
>Ошибка происходит не в программе, а в PE загрузчике, который не может найти нужный файл чтобы замаппить его в адресное пространство процесса
>>>Может быть LoadLibrary?
>>
>>Да нет, у меня программа собирается и линкуется с библиотекой статически ...
>>
>>А на машине, где эта программа выполняется, некоторых библиотек нет. Так вот
>>существует способ как то это проверить в исполняемой программе до возникновения
>>ошибки. Но какой - не пойму. Что-то с SEH связано ...
>>
>
>Ошибка происходит не в программе, а в PE загрузчике, который не может
>найти нужный файл чтобы замаппить его в адресное пространство процессаТы прав, но так происходит в UNIX и ничего с этим не поделать. А в Windows существует путь обхода ... Structured Exception Handling (SEH). Вопрос только как это организовать?
>Доброе время суток, господа. Столкнулся с проблемой в Windows (извиняюсь за оффтопик,
>но может быть кто-то знает), на этапе выполнения невозможно найти DLL,
>необходимую для работы программы, выдается соответствующее окошко. Все бы хорошо, но
>мне нужно без окошка, просто вернуть exit code и все. Знаю,
>что это можно реализовать прямо в этом бинарнике, но как?Вручную грузить библиотеку через LoadLibrary и получать адреса ф-ций через GetProcAddress
>>Доброе время суток, господа. Столкнулся с проблемой в Windows (извиняюсь за оффтопик,
>>но может быть кто-то знает), на этапе выполнения невозможно найти DLL,
>>необходимую для работы программы, выдается соответствующее окошко. Все бы хорошо, но
>>мне нужно без окошка, просто вернуть exit code и все. Знаю,
>>что это можно реализовать прямо в этом бинарнике, но как?
>
>Вручную грузить библиотеку через LoadLibrary и получать адреса ф-ций через GetProcAddressЭто не подойдет по дизайну, я же говорю, что линкуется с DLL при сборке.
>Доброе время суток, господа. Столкнулся с проблемой в Windows (извиняюсь за оффтопик,
>но может быть кто-то знает), на этапе выполнения невозможно найти DLL,
>необходимую для работы программы, выдается соответствующее окошко. Все бы хорошо, но
>мне нужно без окошка, просто вернуть exit code и все. Знаю,
>что это можно реализовать прямо в этом бинарнике, но как?Взгляните на
http://www.microsoft.com/msj/1298/win32/win321298.aspx
Удачи
--- sas
По моему тут легче будет изменить дизайн. На загрузку DLL потребуется написать три строчки кода. Плюс пара строчек на каждую функцию. А на отлавливание такой проблемы нестандартными средствами времени уйдет гораздо больше, да и насколько хорошо это будет работать? А лучше всего решать проблему на этапе _УСТАНОВКИ_.
>По моему тут легче будет изменить дизайн. На загрузку DLL потребуется написать
>три строчки кода. Плюс пара строчек на каждую функцию. А на
>отлавливание такой проблемы нестандартными средствами времени уйдет гораздо больше, да и
>насколько хорошо это будет работать? А лучше всего решать проблему на
>этапе _УСТАНОВКИ_.С этим я совершенно согласен) Но ничего не могу поделать, ах уж эти коммерческие проекты :-(
>
>Взгляните на
>
>http://www.microsoft.com/msj/1298/win32/win321298.aspx
>
>Удачи
>--- sasДобрый день, SAS! DelayLoad для DLL это то, что нужно! Спасибо!
>Доброе время суток, господа. Столкнулся с проблемой в Windows (извиняюсь за оффтопик,
>но может быть кто-то знает), на этапе выполнения невозможно найти DLL,
>необходимую для работы программы, выдается соответствующее окошко. Все бы хорошо, но
>мне нужно без окошка, просто вернуть exit code и все. Знаю,
>что это можно реализовать прямо в этом бинарнике, но как?Итак, кого в будущем заинтересует эта тема, ответ прост...
Читаем:
http://www.microsoft.com/msj/1298/win32/win321298.aspx
http://msdn.microsoft.com/library/default.asp?url=/library/e...
http://bdn.borland.com/article/0,1410,28515,00.htmlЕсли что, спрашивайте!