Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Про улучшение DLL / 25 сообщений из 121, страница 1 из 5
05.11.2014, 09:19
    #38795779
Владимир2012
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
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) пункта ...
...
Рейтинг: 0 / 0
05.11.2014, 09:32
    #38795792
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Владимир2012/про свои потребности пока говорить не буду/
от потребностей решение зависит
...
Рейтинг: 0 / 0
05.11.2014, 15:33
    #38796454
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Владимир2012- (2) вызывать во время run-time работы программы на выполнение функции из произвольных dll
Для реализации (2) нужно знать все об аргументах функции и обязательно их size.
Для "стандартных" типов данных все относительно просто, а вот для "не стандартных" вопрос довольно не прост.
Пока еще не знаю путей его решения.
Не всегда можно вызвать ф-ю из ДЛЛ, даже имея прототип.
...
Рейтинг: 0 / 0
06.11.2014, 09:01
    #38796947
Владимир2012
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Anatoly MoskovskyНе всегда можно вызвать ф-ю из ДЛЛ, даже имея прототип

Безусловно. Тем более многие функции "работают" если для них подготовлена "среда обитания".

Суть данного проекта не в том, что этот механизм не реализован другими, а в том, чтобы
уменьшить трудоемкость возлагаемую на программиста при кодировании.

Поясню.
К примеру посмотрим на http://www.script-coding.com/dynwrapx.html /библиотека для вызова функций Win 32 API/
Решает вопрос?
Да.
Вообщем то как молоток и кувалда хороши если их применять тогда когда они наиболее полезны, так и это
решение безусловно очень полезно ...

Для начала хотелось бы добиться того, чтобы для вызова функции dll программисту не нужно было передавать данные об типах параметров.

PS: Вообще то лукавлю.
То что пытаюсь сделать будет иметь уменьшение трудоемкости в кодировании всего лишь как побочный эффект.
...
Рейтинг: 0 / 0
06.11.2014, 09:49
    #38796980
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
авторТекущая разрабатываемая ветка решения этого вопроса основывается на том, что алгоритм знает где находятся необходимые *.h.
Так вот придется парсить *.h и выуживать из них необходимые данные.

В чём проблема ?? Создайте свой синтаксический анализатор.
Тем более если вы программируете на С/С++.
...
Рейтинг: 0 / 0
06.11.2014, 09:52
    #38796986
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Владимир2012 PS: Вообще то лукавлю.
То что пытаюсь сделать будет иметь уменьшение трудоемкости в кодировании всего лишь как побочный эффект.

вы хотите сказать- "если я не буду писать анализатор своими руками, а скачаю какую-то библиотеку, реализующую то что нужно, то я добьюсь поставленной задачи и плюс минимизирую время на разработку." ?



Очевидно, это так.
...
Рейтинг: 0 / 0
06.11.2014, 09:56
    #38796990
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
В контексте программирования, я бы не рекомендовал использовать словосочетание "побочный эффект" так, как вы его использовали. (не придираюсь, просто у этого словосочетания есть вполне определённо значение)
K&RОбращения к функциям, вложенные операции присваивания, операции
увеличения и уменьшения приводят к так называемым "побочным эффектам" —
некоторые переменные изменяются как побочный результат вычисления выражений.

Ещё ссылка
...
Рейтинг: 0 / 0
06.11.2014, 10:29
    #38797026
Владимир2012
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
SashaMercuryвы хотите сказать- "если я не буду писать анализатор своими руками, а скачаю какую-то библиотеку, реализующую то что нужно, то я добьюсь поставленной задачи и плюс минимизирую время на разработку." ?

Ну да ладно приоткрою немножко свои потребности.
Данный проект в какой-то мере позволит решить вопрос создания программ, которые без
перекомпиляции смогут "на лету" использовать функции находящиеся в разных dll
/извиняюсь за некоторую корявость фразы .../.
Поясню.
Обычно программа использует какой-либо API, который реализован в каких-либо dll.
Так вот хочет добиться того, чтобы программа без перекомпиляции смогла бы использовать
аналогичные функции находящиеся в других dlls

PS: Про то как это будет организовано /программный комплекс/ и как программа будет понимать, что
с данного момента должна будет использовать другую функцию ... ...
прошу не спрашивать ...
...
Рейтинг: 0 / 0
06.11.2014, 14:25
    #38797322
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Владимир2012,

То, что вы хотите, называется шаблон проектирования Адаптер.
И для его реализации вообще не нужны все эти извращения с анализом ДЛЛ.

Если вам надо работать с разными, но аналогичными АПИ, то надо ввести дополнительный уровень абстракции.
Назовите его Обертка.
Основная программа работает только с АПИ обертки, а оберток несколько и они реализуются в виде отдельных ДЛЛ, каждая из которых вызывает свое конкретное апи.
Таким образом для добавления нового АПИ вам не надо перекомпилировать программу, а надо только скомпилировать новую обертку и указать ее в конфиге программы.
...
Рейтинг: 0 / 0
06.11.2014, 14:57
    #38797358
Владимир2012
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Anatoly Moskovsky, а надо только скомпилировать новую обертку и указать ее в конфиге программы.

Обратите внимание на post выше:

... Данный проект в какой-то мере позволит решить вопрос создания программ, которые без
перекомпиляции смогут "на лету" ...
...
Рейтинг: 0 / 0
06.11.2014, 15:11
    #38797369
Владимир2012
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Владимир2012Обратите внимание на post выше:

Пожалуй поспешил с ответом ...

... Основная программа работает только с АПИ обертки, а оберток несколько и они реализуются в виде
отдельных ДЛЛ, каждая из которых вызывает свое конкретное апи.

Опять мы привязаны к dll ... ...

PS: Просьба не продолжать обсуждение этой темы.
Еще раз.
Цель проекта не в том, чтобы решить какие-то локальные хотелки, а предоставить
разработчику механизм работы при котором у него не будет болеть голова об создании
каких-либо адаптеров ... ...
...
Рейтинг: 0 / 0
06.11.2014, 15:18
    #38797377
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Владимир2012Так вот хочет добиться того, чтобы программа без перекомпиляции смогла
бы использовать аналогичные функции находящиеся в других dlls
Ну, предположим проблему размещения параметров в стэке/регистрах для всех возможных
calling convention можно решить ассемблером. Но я бы посмотрел что ты будешь сделать с
экспортируемыми функциями, которые не только не mangled, но ещё и совершенно безымянные...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.11.2014, 15:41
    #38797406
Владимир2012
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Dimitry SibiryakovНо я бы посмотрел что ты будешь сделать с
экспортируемыми функциями,
Что не удастся решить будет вынесено в manual. Скажем в раздел "Ограничения по использованию".

Знаете многие фирмы пишут подобные "велосипеды" и накладывают разного рода ограничения
/например аргументы функции должны иметь только стандартные типы данных .../

PS: Задача довольно не простая ...
Пока выбрал направление работ к ее решению, то что приведено несколькими постами выше.

Dimitry Sibiryakov
Когда года два назад пришлось мне разработать decompiler для Firebird, то надо сказать
ты правильно угадывал чего автор хочет.
Что скажешь в этом случае?
Кстати на счет decompiler он существует и на 100% правильно выполняет свои функции.
После декомпиляции производится компиляция декомпилированного текста и затем производится
верификация исходного бинарного кода с полученным ...
Так вот поверь мне декомпилятор прошел "жесткую" проверку.
Поэтому то набираюсь смелости утверждать, что он "на 100% правильно выполняет свои функции."
...
Рейтинг: 0 / 0
06.11.2014, 17:24
    #38797558
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Владимир2012Цель проекта не в том, чтобы решить какие-то локальные хотелки, а предоставить
разработчику механизм работы при котором у него не будет болеть голова об создании
каких-либо адаптеров ...
Ну если отрезать голову то определенно она не будет болеть :)
Вы занимаетесь фигней. Не взлетит оно. Будет работать в каких-то нескольких частных случаев с мегакостылями в качестве подпорок.
...
Рейтинг: 0 / 0
06.11.2014, 17:35
    #38797577
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Об чём тут? Попытка написать "свою" рефлексию?
...
Рейтинг: 0 / 0
06.11.2014, 18:48
    #38797671
Владимир2012
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Anatoly MoskovskyБудет работать в каких-то нескольких частных случаев с мегакостылями в качестве подпорок.

А поподробней можно об "в каких-то нескольких частных случаев с мегакостылями в качестве подпорок"
Я не иронизирую.
За ваши ответы спасибо.

PS: Вообще то тема на мой взгляд интересна.
Хотелось бы, чтобы другие разработчики рассказали как они видят решение этого вопроса ... ...
А что до меня. Так у меня уже давненько и не раз мелькала мысль разработать другой формат
представления dll /скорее всего к этому и приду/.

И еще какой смысл говорить автору, что у него ни чего не получится ...
Мною поднятая тема не для выпендривания перед другими, а для того, чтобы услышать мнение
и подходы к решению этого вопроса других.
...
Рейтинг: 0 / 0
07.11.2014, 05:21
    #38798070
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Владимир2012 Цель проекта не в том, чтобы решить какие-то локальные хотелки, а предоставить
разработчику механизм работы при котором у него не будет болеть голова об создании
каких-либо адаптеров ... ...Ты сам себе противоречишь.
Либо механизм работы и адаптеры, либо иди на биржу труда нанимай себе суб-разработчика, пусть у него голова болит.
Иметь механизм работы без адаптеров в принципе невозможно.
...
Рейтинг: 0 / 0
07.11.2014, 05:28
    #38798071
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Владимир2012 А что до меня. Так у меня уже давненько и не раз мелькала мысль разработать другой формат
представления dll /скорее всего к этому и приду/.Ну.... если тебе это так сильно хочется, то вперед!
Но начни все-же с "локальных хотелок". Эта смутная идея у тебя же не на пустом месте возникла. Вот возьми ту самую конкретную задачу для которой тебе понадобилось изобретать замену для dll и придумай для нее три-четыре "своих супер dll". Потом опиши нам эти супер-dll и покажи что их нельзя (или хотя бы неудобно) сделать на основе обычных dll.
Сможешь это сделать?
...
Рейтинг: 0 / 0
07.11.2014, 13:47
    #38798500
Владимир2012
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
White Owl(или хотя бы неудобно) сделать на основе обычных dll.

Дело не в том, что в существующем формате PE /dll/ файла чего-то там не достает, а в том что
данный формат использован был разработчиками в соответствии с их видениями того что им нужно
для run time использования dll.

Дальнейшее что сейчас скажу не воспринимайте, что это мне достает и нужно добавить в dll, а
всего лишь как пример.
Предположим я хочу, чтобы при run time проверялась лицензия /какие то поля/ на использование той или
иной функции.
Слушайте этих "хотелок" может быть много ...

Другой формат dll /или доработанный нынешний/ мне в основном нужен для того, чтобы в ней было
достаточно данных для того, чтобы обеспечить динамическое во время run-time использования функций
без необходимости перекомпиляции исходного текста.

И не факт, что буду разрабатывать новый формат dll /но не исключаю, что придется/
...
Рейтинг: 0 / 0
07.11.2014, 14:04
    #38798524
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Владимир2012Другой формат dll /или доработанный нынешний/ мне в основном нужен для того, чтобы в ней было
достаточно данных для того, чтобы обеспечить динамическое во время run-time использования функций
без необходимости перекомпиляции исходного текста.

COM хочешь заново изобрести?
...
Рейтинг: 0 / 0
07.11.2014, 14:18
    #38798542
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
ИзопропилCOM хочешь заново изобрести?
Не, сам по себе СОМ таки требует перекомпиляции. Он, похоже, тщится изобрести IDispatch.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
07.11.2014, 14:23
    #38798554
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Dimitry SibiryakovИзопропилCOM хочешь заново изобрести?
Не, сам по себе СОМ таки требует перекомпиляции. Он, похоже, тщится изобрести IDispatch.
не-не, он хочет прочитать tlb и на ходу сгенерить прокси
...
Рейтинг: 0 / 0
07.11.2014, 14:47
    #38798571
Владимир2012
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
ИзопропилDimitry Sibiryakovпропущено...

Не, сам по себе СОМ таки требует перекомпиляции. Он, похоже, тщится изобрести IDispatch.
не-не, он хочет прочитать tlb и на ходу сгенерить прокси

А это имеет какое-либо значение /кстати COM технологию часто использую в работе/?

PS: Лучше подумайте об дивидентах, которые бы дало решение этого вопроса.
...
Рейтинг: 0 / 0
07.11.2014, 15:11
    #38798601
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Владимир2012PS: Лучше подумайте об дивидентах, которые бы дало решение этого вопроса.
Да нет никаких дивидендов :)
Постановка задачи - отказаться от перекомпиляции - бессмысленна.
Почему вообще возникло такое требование? У вас что нет компилятора? Или библиотека поставляется без заголовочного файла? Думаю что нет.
Все равно код который будет динамически вызывать ДЛЛ надо будет как-то компилировать.
Почему же тогда надо извращаться с рефлексией, когда можно вызвать функцию прямо, используя ее прототип (статически или через указатель)?
...
Рейтинг: 0 / 0
07.11.2014, 15:32
    #38798634
Владимир2012
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Про улучшение DLL
Anatoly MoskovskyВсе равно код который будет динамически вызывать ДЛЛ надо будет как-то компилировать.


На ходу придумываю пример.
К примеру разрабатываю калькулятор, который имеет какой-то набор функций.
Скажем имеется какой-то модуль, который отвечает за вычисление выражения ...
И вот скажем понадобилось нам добавить возможность использования новых функций ...
Дальше понятно?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Про улучшение DLL / 25 сообщений из 121, страница 1 из 5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]