Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВчера я решил заняться чем-нибудь интересным. Вот опять как и у автора topic возникает необходимость изобретать велосипед. Сейчас разрабатываю library, которая будет предоставлять расширенный функционал при работе с dll файлами. В частности: - (1) производить demangle без использования UnDecorateSymbolName function http://msdn.microsoft.com/en-us/library/windows/desktop/ms681400(v=vs.85).aspx. - (2) вызывать во время run-time работы программы на выполнение функции из произвольных dll ... (1) нужен для того, чтобы получить данные об параметрах и возвращаемом значении функции (2) думаю будет интересен многим /про свои потребности пока говорить не буду/ Для реализации (2) нужно знать все об аргументах функции и обязательно их size. Для "стандартных" типов данных все относительно просто, а вот для "не стандартных" вопрос довольно не прост. Пока еще не знаю путей его решения. Текущая разрабатываемая ветка решения этого вопроса основывается на том, что алгоритм знает где находятся необходимые *.h. Так вот придется парсить *.h и выуживать из них необходимые данные. PS: Так как уже не один раз приходилось решать подобного рода задачи, то скорее всего придется изучить уже кем-то изготовленные "велосипеды" llvm.org ... Сейчас только приступаю к реализации (2) пункта ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 09:19 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012/про свои потребности пока говорить не буду/ от потребностей решение зависит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 09:32 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012- (2) вызывать во время run-time работы программы на выполнение функции из произвольных dll Для реализации (2) нужно знать все об аргументах функции и обязательно их size. Для "стандартных" типов данных все относительно просто, а вот для "не стандартных" вопрос довольно не прост. Пока еще не знаю путей его решения. Не всегда можно вызвать ф-ю из ДЛЛ, даже имея прототип. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 15:33 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyНе всегда можно вызвать ф-ю из ДЛЛ, даже имея прототип Безусловно. Тем более многие функции "работают" если для них подготовлена "среда обитания". Суть данного проекта не в том, что этот механизм не реализован другими, а в том, чтобы уменьшить трудоемкость возлагаемую на программиста при кодировании. Поясню. К примеру посмотрим на http://www.script-coding.com/dynwrapx.html /библиотека для вызова функций Win 32 API/ Решает вопрос? Да. Вообщем то как молоток и кувалда хороши если их применять тогда когда они наиболее полезны, так и это решение безусловно очень полезно ... Для начала хотелось бы добиться того, чтобы для вызова функции dll программисту не нужно было передавать данные об типах параметров. PS: Вообще то лукавлю. То что пытаюсь сделать будет иметь уменьшение трудоемкости в кодировании всего лишь как побочный эффект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 09:01 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
авторТекущая разрабатываемая ветка решения этого вопроса основывается на том, что алгоритм знает где находятся необходимые *.h. Так вот придется парсить *.h и выуживать из них необходимые данные. В чём проблема ?? Создайте свой синтаксический анализатор. Тем более если вы программируете на С/С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 09:49 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012 PS: Вообще то лукавлю. То что пытаюсь сделать будет иметь уменьшение трудоемкости в кодировании всего лишь как побочный эффект. вы хотите сказать- "если я не буду писать анализатор своими руками, а скачаю какую-то библиотеку, реализующую то что нужно, то я добьюсь поставленной задачи и плюс минимизирую время на разработку." ? Очевидно, это так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 09:52 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
В контексте программирования, я бы не рекомендовал использовать словосочетание "побочный эффект" так, как вы его использовали. (не придираюсь, просто у этого словосочетания есть вполне определённо значение) K&RОбращения к функциям, вложенные операции присваивания, операции увеличения и уменьшения приводят к так называемым "побочным эффектам" — некоторые переменные изменяются как побочный результат вычисления выражений. Ещё ссылка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 09:56 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
SashaMercuryвы хотите сказать- "если я не буду писать анализатор своими руками, а скачаю какую-то библиотеку, реализующую то что нужно, то я добьюсь поставленной задачи и плюс минимизирую время на разработку." ? Ну да ладно приоткрою немножко свои потребности. Данный проект в какой-то мере позволит решить вопрос создания программ, которые без перекомпиляции смогут "на лету" использовать функции находящиеся в разных dll /извиняюсь за некоторую корявость фразы .../. Поясню. Обычно программа использует какой-либо API, который реализован в каких-либо dll. Так вот хочет добиться того, чтобы программа без перекомпиляции смогла бы использовать аналогичные функции находящиеся в других dlls PS: Про то как это будет организовано /программный комплекс/ и как программа будет понимать, что с данного момента должна будет использовать другую функцию ... ... прошу не спрашивать ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 10:29 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012, То, что вы хотите, называется шаблон проектирования Адаптер. И для его реализации вообще не нужны все эти извращения с анализом ДЛЛ. Если вам надо работать с разными, но аналогичными АПИ, то надо ввести дополнительный уровень абстракции. Назовите его Обертка. Основная программа работает только с АПИ обертки, а оберток несколько и они реализуются в виде отдельных ДЛЛ, каждая из которых вызывает свое конкретное апи. Таким образом для добавления нового АПИ вам не надо перекомпилировать программу, а надо только скомпилировать новую обертку и указать ее в конфиге программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 14:25 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, а надо только скомпилировать новую обертку и указать ее в конфиге программы. Обратите внимание на post выше: ... Данный проект в какой-то мере позволит решить вопрос создания программ, которые без перекомпиляции смогут "на лету" ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 14:57 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Обратите внимание на post выше: Пожалуй поспешил с ответом ... ... Основная программа работает только с АПИ обертки, а оберток несколько и они реализуются в виде отдельных ДЛЛ, каждая из которых вызывает свое конкретное апи. Опять мы привязаны к dll ... ... PS: Просьба не продолжать обсуждение этой темы. Еще раз. Цель проекта не в том, чтобы решить какие-то локальные хотелки, а предоставить разработчику механизм работы при котором у него не будет болеть голова об создании каких-либо адаптеров ... ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 15:11 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Так вот хочет добиться того, чтобы программа без перекомпиляции смогла бы использовать аналогичные функции находящиеся в других dlls Ну, предположим проблему размещения параметров в стэке/регистрах для всех возможных calling convention можно решить ассемблером. Но я бы посмотрел что ты будешь сделать с экспортируемыми функциями, которые не только не mangled, но ещё и совершенно безымянные... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 15:18 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНо я бы посмотрел что ты будешь сделать с экспортируемыми функциями, Что не удастся решить будет вынесено в manual. Скажем в раздел "Ограничения по использованию". Знаете многие фирмы пишут подобные "велосипеды" и накладывают разного рода ограничения /например аргументы функции должны иметь только стандартные типы данных .../ PS: Задача довольно не простая ... Пока выбрал направление работ к ее решению, то что приведено несколькими постами выше. Dimitry Sibiryakov Когда года два назад пришлось мне разработать decompiler для Firebird, то надо сказать ты правильно угадывал чего автор хочет. Что скажешь в этом случае? Кстати на счет decompiler он существует и на 100% правильно выполняет свои функции. После декомпиляции производится компиляция декомпилированного текста и затем производится верификация исходного бинарного кода с полученным ... Так вот поверь мне декомпилятор прошел "жесткую" проверку. Поэтому то набираюсь смелости утверждать, что он "на 100% правильно выполняет свои функции." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 15:41 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Цель проекта не в том, чтобы решить какие-то локальные хотелки, а предоставить разработчику механизм работы при котором у него не будет болеть голова об создании каких-либо адаптеров ... Ну если отрезать голову то определенно она не будет болеть :) Вы занимаетесь фигней. Не взлетит оно. Будет работать в каких-то нескольких частных случаев с мегакостылями в качестве подпорок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 17:24 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Об чём тут? Попытка написать "свою" рефлексию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 17:35 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyБудет работать в каких-то нескольких частных случаев с мегакостылями в качестве подпорок. А поподробней можно об "в каких-то нескольких частных случаев с мегакостылями в качестве подпорок" Я не иронизирую. За ваши ответы спасибо. PS: Вообще то тема на мой взгляд интересна. Хотелось бы, чтобы другие разработчики рассказали как они видят решение этого вопроса ... ... А что до меня. Так у меня уже давненько и не раз мелькала мысль разработать другой формат представления dll /скорее всего к этому и приду/. И еще какой смысл говорить автору, что у него ни чего не получится ... Мною поднятая тема не для выпендривания перед другими, а для того, чтобы услышать мнение и подходы к решению этого вопроса других. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2014, 18:48 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012 Цель проекта не в том, чтобы решить какие-то локальные хотелки, а предоставить разработчику механизм работы при котором у него не будет болеть голова об создании каких-либо адаптеров ... ...Ты сам себе противоречишь. Либо механизм работы и адаптеры, либо иди на биржу труда нанимай себе суб-разработчика, пусть у него голова болит. Иметь механизм работы без адаптеров в принципе невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 05:21 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012 А что до меня. Так у меня уже давненько и не раз мелькала мысль разработать другой формат представления dll /скорее всего к этому и приду/.Ну.... если тебе это так сильно хочется, то вперед! Но начни все-же с "локальных хотелок". Эта смутная идея у тебя же не на пустом месте возникла. Вот возьми ту самую конкретную задачу для которой тебе понадобилось изобретать замену для dll и придумай для нее три-четыре "своих супер dll". Потом опиши нам эти супер-dll и покажи что их нельзя (или хотя бы неудобно) сделать на основе обычных dll. Сможешь это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 05:28 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
White Owl(или хотя бы неудобно) сделать на основе обычных dll. Дело не в том, что в существующем формате PE /dll/ файла чего-то там не достает, а в том что данный формат использован был разработчиками в соответствии с их видениями того что им нужно для run time использования dll. Дальнейшее что сейчас скажу не воспринимайте, что это мне достает и нужно добавить в dll, а всего лишь как пример. Предположим я хочу, чтобы при run time проверялась лицензия /какие то поля/ на использование той или иной функции. Слушайте этих "хотелок" может быть много ... Другой формат dll /или доработанный нынешний/ мне в основном нужен для того, чтобы в ней было достаточно данных для того, чтобы обеспечить динамическое во время run-time использования функций без необходимости перекомпиляции исходного текста. И не факт, что буду разрабатывать новый формат dll /но не исключаю, что придется/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 13:47 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Другой формат dll /или доработанный нынешний/ мне в основном нужен для того, чтобы в ней было достаточно данных для того, чтобы обеспечить динамическое во время run-time использования функций без необходимости перекомпиляции исходного текста. COM хочешь заново изобрести? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 14:04 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
ИзопропилCOM хочешь заново изобрести? Не, сам по себе СОМ таки требует перекомпиляции. Он, похоже, тщится изобрести IDispatch. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 14:18 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovИзопропилCOM хочешь заново изобрести? Не, сам по себе СОМ таки требует перекомпиляции. Он, похоже, тщится изобрести IDispatch. не-не, он хочет прочитать tlb и на ходу сгенерить прокси ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 14:23 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
ИзопропилDimitry Sibiryakovпропущено... Не, сам по себе СОМ таки требует перекомпиляции. Он, похоже, тщится изобрести IDispatch. не-не, он хочет прочитать tlb и на ходу сгенерить прокси А это имеет какое-либо значение /кстати COM технологию часто использую в работе/? PS: Лучше подумайте об дивидентах, которые бы дало решение этого вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 14:47 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012PS: Лучше подумайте об дивидентах, которые бы дало решение этого вопроса. Да нет никаких дивидендов :) Постановка задачи - отказаться от перекомпиляции - бессмысленна. Почему вообще возникло такое требование? У вас что нет компилятора? Или библиотека поставляется без заголовочного файла? Думаю что нет. Все равно код который будет динамически вызывать ДЛЛ надо будет как-то компилировать. Почему же тогда надо извращаться с рефлексией, когда можно вызвать функцию прямо, используя ее прототип (статически или через указатель)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 15:11 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВсе равно код который будет динамически вызывать ДЛЛ надо будет как-то компилировать. На ходу придумываю пример. К примеру разрабатываю калькулятор, который имеет какой-то набор функций. Скажем имеется какой-то модуль, который отвечает за вычисление выражения ... И вот скажем понадобилось нам добавить возможность использования новых функций ... Дальше понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 15:32 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38798601&tid=2019236]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
11ms |
check topic access: |
11ms |
track hit: |
191ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 273ms |
| total: | 587ms |

| 0 / 0 |
