Этот баннер — требование Роскомнадзора для исполнения 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 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВсе равно код который будет динамически вызывать ДЛЛ надо будет как-то компилировать. можно и однократно скомпилить для линковки с основной программой, далее - интерпретатор параметров и соглашений о вызове.( питон, например запользовать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 15:35 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012И вот скажем понадобилось нам добавить возможность использования новых функций ... универсальный плагин? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 15:37 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Изопропил( питон, например запользовать) Ну да ладно. Строгаю некую новую программную систему. Будет в ней что-то интерпретаторов, что-то от компиляторов ... Так вот /надеюсь осилю/ будет в ней возможность во время run time использовать новый функционал без перекомпиляции модулей ... PS: Эту тему точно не буду обсуждать, потому что она легко переходит в флуд ... /да и не к чему это/. Вот когда появится хотя бы бета версия, то тогда можно будет о чем либо говорить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 15:46 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012, так адаптер на каком языке программисты-пользователи писать должны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 16:05 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Может плавное развитие этой идеи приведёт к Microsoft .Net Assembly? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 16:07 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012 Слушайте этих "хотелок" может быть много ... Ну так перечисли эти хотелки. Если их много, то десяток-два ты точно сможешь набрать. Владимир2012 Предположим я хочу, чтобы при run time проверялась лицензия /какие то поля/ на использование той или иной функции.Я не понимаю эту хотелку, объясни ее пожалуйста с примерами. Владимир2012 Другой формат dll /или доработанный нынешний/ мне в основном нужен для того, чтобы в ней было достаточно данных для того, чтобы обеспечить динамическое во время run-time использования функций без необходимости перекомпиляции исходного текста.пока ты не покажешь конкретную задачу, которую невозможно решить на основе dll, все твои аргументы будут отметаться по принципу: "он просто не умеет использовать dll". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2014, 18:44 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Anatoly MoskovskyВсе равно код который будет динамически вызывать ДЛЛ надо будет как-то компилировать. На ходу придумываю пример. К примеру разрабатываю калькулятор, который имеет какой-то набор функций. Скажем имеется какой-то модуль, который отвечает за вычисление выражения ... И вот скажем понадобилось нам добавить возможность использования новых функций ... Дальше понятно? На ходу уже второй раз пишу как это делать правильно. 1) Делаем плагинАПИ. Согласно этому АПИ, функциональность расширяется с помощью загрузки ДЛЛ из папки с плагинами. Каждая ДЛЛ экспортирует функцию, которая регистрирует предоставляемую функциональность в ядре программы (точка входа в ядро например передается через один из аргументов этой экспортированной функции при загрузке плагина). 2) И вот скажем понадобилось нам добавить возможность использования новых функций. Дальше понятно - делаем еще одну ДЛЛ, которая регистрирует новые функции реализованные в ней. И копируем в папку с плагинами Программу при этом перекомпилировать не требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 04:21 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Это настолько тривиальная, отработанная, и можно сказать классическая схема расширяемости, что я до сих пор не могу поверить что вы на полном серьезе обсуждаете нечто, что на порядки сложнее в реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 04:27 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyпока ты не покажешь конкретную задачу, Вопрос, который меня интересует связан с возможностью использования во время run-time функций из произвольных dll. PS: Спорить не люблю ... Вас все устраивает - рад за вас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 10:00 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyСогласно этому АПИ, функциональность расширяется с помощью загрузки ДЛЛ из папки с плагинами. И получаем страшный сон в виде jquery, nodejs /с сотнями plugin/... ... PS: Это интересный путь ... Попытаюсь развить и другой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 10:05 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Еще раз - run time мне нужен для некой программной технологии, которую по мере сил разрабатываю. PS: Вопросы об ней могут быть только когда она дорастет до беты. Обсуждать ее пока нет смысла ... Кстати одним из demo будет - calculator ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 10:15 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Вопрос, который меня интересует связан с возможностью использования во время run-time функций из произвольных dll. ну хорошо - добыли из разных источников описание параметров функции. что дальше то делать с этим? предположим, гипотетический калькулятор подлежит расширению функциями double f(double) в одной dll функция имеет дополнительный аргумент (ну предположим точность вычислений) в другой - не имеет дополнительного параметра, но типы параметра и значения - float что с этим зоопарком делать? на специальном языке описывать правила преобразования параметров? без интерпретатора этого языка не обойтись, ибо в любой момент в рантайме может появиться новая dll со своими соглашениями о вызове функции (ну например потребовать предварительно вызвать дополнительную функцию для инициализации) Или жёстко потребовать, чтобы расширяющие калькулятор dll использовали чётко определённый интерфейс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 10:32 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Изопропилчто с этим зоопарком делать? Попал в точку. Как раз развиваемая технология и будет заниматься этими вопросами и многими другими ... PS: Не обижайся, но эти вопросы обсуждать не буду. Если копнуть этот вопрос, то он потянет мнооого других. И в результате вместо разработки начну писать manual на то, чего еще нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 10:45 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Как раз развиваемая технология так не вижу развиваемой технологии Или просто имеется абстрактное желание без малейших идей по реализации. А поиск идёт не там где потеряли, а там где светло (как добыть описание описание параметров). Ну нашли, формализовали описание, нарисовали универсальный вызывальщик dynamicCall(entryPoint,callConvention,parameterDescription,parameterArray,pResult) дальше то что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 11:31 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Изопропилдальше то что делать? Что дальше с этим делать зависит от программиста. PS: Еще раз в дебри вдаваться не считаю нужным. Меня интересует чисто техническое решение этого вопроса. Да и более ранние ответы разве не говорят о том чего хочет автор? "... Или просто имеется абстрактное желание " - "... обидеть норовишь. Тут за день так накувыркаешься. Придешь на форум ..." /конечно это шутка не прими на свой счет/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 11:48 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Да и более ранние ответы разве не говорят о том чего хочет автор? уже не говорят. без шуток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 12:17 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Изопропилбез шуток. PS: Похоже обсуждать поднятый мной вопрос ни кто не хочет, а все сводится к - "Расскажи для чего это тебе нужно?". Любопытно неужели ни кому не нужно? Не удивлюсь если ответ будет - ''Да". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 12:23 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012"Расскажи для чего это тебе нужно?". для чего - понятно - попытка написать сверхуниверсальную плагинную систему. я интересуюсь, как она будет функционировать в некоторых частных случаях - того же калькулятора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 12:35 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Любопытно неужели ни кому не нужно? Не удивлюсь если ответ будет - ''Да". Разумеется, ответ будет "да". Программирование существует не первый день. Динамические библиотеки тоже изобретены ещё в прошлом веке. Если бы кому-то понадобился универсальный вызыватель произвольных функций, ты бы о нём слышал. Но даже самое близкое к нему приближение - RunDll.exe - всё же требует от функций определённую сигнатуру. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 12:39 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovРазумеется, ответ будет "да". Мало будет пользы от того, что года 3 буду чего-то там фантазировать, что потом ни кому не будет нужно. Придет время поделюсь. Пока не чем. Поэтому конечно я рад тому " Динамические библиотеки тоже изобретены ещё в прошлом веке" и в придачу этому - колесо. Ни кто эти достижения не отменяет и все мы этим пользуемся. Но сделанный тобой из этого вывод как на мой взгляд - сомнителен. PS: Кстати и decompile для firebird уже давно бы отдал в общее пользование с исходниками. Но сообщество firebird выше этого ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 12:54 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012, как с интерфейсом расширения калькулятора? как мне адаптер описать? декларативно или императивно - неважно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 12:58 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Изопропилкак мне адаптер описать? Систему пишу на C++, а вот ответ на твой вопрос лежит в твоем же вопросе: "что с этим зоопарком делать? на специальном языке описывать правила преобразования параметров? без интерпретатора этого языка не обойтись, ибо в любой момент в рантайме может появиться новая dll со своими соглашениями о вызове функции (ну например потребовать предварительно вызвать дополнительную функцию для инициализации)" Система в чем то будет похожа на .Net. Но с совершенно иным подходом к декларирования, ... ... ... PS: Слушай не тереби меня пока. Все твои вопросы правильны и в точку. Но что ты хочешь, чтобы я тебе привел описание архитектурных решений системы, которая только развивается? То о чем ты спрашиваешь уже частично лежит в работающем коде, частично в *.txt в которых автор отражает построение архитектуры системы ... Рад твоей заинтересованности и надеюсь вернемся еще к этим вопросам ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 13:22 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012, презентация нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 13:42 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012которая только развивается? проектируется скорее - проектные решения и интересуют. представление метаданных в частности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 13:58 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
ИзопропилВладимир2012которая только развивается? проектируется скорее - проектные решения и интересуют. представление метаданных в частности Calculator и будет презентацией. Работы много. Но она в чем то интересна, в чем то рутинна ... Все как обычно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 14:05 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012, код не интересен, интересна концепция ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 14:08 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Изопропилкод не интересен, интересна концепция Да понял я давно к чему ты ведешь. PS: Все свое время. Пока это - "государственная тайна". А если серьезно - ни когда не обсуждаю то, что еще не реализовано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 14:13 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012 А если серьезно - ни когда не обсуждаю то, что еще не реализовано.Видишь ли, мы серьезно сомневаемся что этот проект в принципе возможно реализовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 18:25 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
White OwlВладимир2012 А если серьезно - ни когда не обсуждаю то, что еще не реализовано.Видишь ли, мы серьезно сомневаемся что этот проект в принципе возможно реализовать. Возможно! PS: Вообще то при реализации этого проекта я его потихоньку наполняю разными классами, которые являются не абстрактными, а реально используемыми /но те, что нужны для реализации проекта/. Если бы была команда единомышленников /которые бы поверили не мне, а архитектурным решениям проекта/ с которыми бы вместе производили его разработку, то ... "а так по 5, но большие". Но это не реально: - мы живем в реальном мире и нам нужно семью кормить; - у нас и своих идей вагон; - ... - ... То больше потеряю времени. + к этому как у лебедя, рака и щуки у каждого свое видение решения вопросов ... Разве не прав? А концовкой этого всего будет, то что кто-то продвинет эту архитектуру, но при этом внесет свою такую лепту, что от первоначального замысла ни чего не останется. Скажите мрачно смотрю. Согласен. Но у меня не было в жизни примеров, которые бы развеяли этот взгляд. На счет dll. Было бы совсем не плохо если бы об функциях хранилось больше мета информации /к примеру как в tlb/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 21:30 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
А вот любопытно часто на форумах слышу: "мы считаем", "мы думаем". Когда это участники форума успевают коллегиально прийти к какому то мнению если в ответах не чувствуется этой коллегиальности ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2014, 22:00 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012, Нас с White Owl как минимум двое, так что он вполне имеет право говорить "мы" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 05:29 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Microsoft ни чего не будет улучшать в dll. Их линия forever - .Net, а там в псевдокоде все, что мне нужно и больше имеется ... PS: .Net не отвергаю /как и другие language. В них реализовано много интересных идей .../. Весьма и весьма хороший проект. Но есть в нем как и во всех продуктах Microsoft большой минус - программисты должны изучать, изучать, ... до глубокой старости и более. Изюминка моего проекта будет технология по типу 1С, но с совершенно иным подходом к пониманию что такое объект и как с ним работать. Поэтому надеюсь многое будет много проще ... ... Еще раз: это будет не аналог 1С /1С приведена как пример интересной технологии/ Эпилог: обсуждать совершенствование dll нет смысла /ни кто этим заниматься не будет/. В моем проекте конечно будет использоваться какое-то бинарное представление объектов. Вот в нем и будет находиться вся необходимая meta information ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 08:30 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012В моем проекте конечно будет использоваться какое-то бинарное представление объектов. Вот в нем и будет находиться вся необходимая meta information IDispatch. Ню-ню... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 12:26 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovIDispatch. Ню-ню Люди часто и густо высказывают "истинное суждение" и умиляются от своих "знаний" ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 12:38 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Microsoft ни чего не будет улучшать в dll. Их линия forever - .Net, а там в псевдокоде все, что мне нужно и больше имеется ... Не будет, но не поэтому, а потому, что больше ничего улучшать в DLL не нужно. То, что ты хочешь, это не .dll, это RTTI или Reflection. В .net он есть. В COM/OLE он есть. .DLL тут вообще ни при чём. и занафига тебе нужно вызывать "всё что угодно" из .DLL -- тоже не понятно. Это просто вообще никогда не нужно. Нужно вызывать только то, что МОЖНО вызывать, что было придумано для того, чтобы БЫТЬ ВЫЗВАННЫМ. Владимир2012 Но есть в нем как и во всех продуктах Microsoft большой минус - программисты должны изучать, изучать, ... до глубокой старости и более. Ты ещё не понял, что "изучать, изучать, ... " -- это суть профессии программиста ? Ну и немного скажу в защиту .NET-а. Там такая чехарда технологий не совсем потому, что это именно Microsoft и его желание заставить всех "изучать, изучать, ... до старости", а по большей части из-за общих кризисов в производстве ПО. Их одновременно сейчас два, один -- сетевая революция, что локальные приложения теперь не в почёте, и мобильная революция, что есть куча совершенно разных по характеристикам и возможностям устройств. MS пытается решить эти две проблемы, решить их одновременно, и, что для него нехарактерно, -- первым. Думаю, у него это вряд ли получится. Но мы сейчас все страдаем от этих потугов (я лично, правда, -- не страдаю). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 12:57 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012 На ходу придумываю пример. К примеру разрабатываю калькулятор, который имеет какой-то набор функций. Скажем имеется какой-то модуль, который отвечает за вычисление выражения ... И вот скажем понадобилось нам добавить возможность использования новых функций ... Дальше понятно? Нет, не понятно. Модуль должен как-то взаимодействовать с основной программой калькулятора. Святым духом данные туда-сюда передаваться не смогут. Нужно соглашение о взаимодействии, нужны структуры данных и их описание, и поддержка их с двух сторон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 14:01 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012, по ходу прочтения темы у меня возникли те же мысли, что у большинства ответивших. Твои хотелки давно реализованы в COM, .NET и пр. Ну или очень напоминают их. В частности: Владимир2012Предположим я хочу, чтобы при run time проверялась лицензия /какие то поля/ на использование той или иной функции. - в дотнете есть подпись сборки (dll) строгим именем - своего рода лицензия. А проверка на использование той или иной функции идёт вразрез с твоими же высказываниями о том, что можно использовать любую функцию из любой dll. Тут либо любая, либо проверка. Допустим, в какой-то dll есть функция, принимающая два целочисленных параметра и ничего не возвращающая. Один параметр - частота звука, другой - его длительность. При вызове функция воспроизводит звук. Вот скажи, зачем её вызывать из калькулятора? Она нужна для медиапроигрывателя, для синтезатора звуков. Или же фунция будет ломиться в БД (несуществующую), пытаясь установить с ней соединение, что-то прочитать из неё, что-то записать. В итоге - крах программы (ну или как там обработка ошибок будет реализована). То есть сама идея вызывать любую функцию изначально абсурдна. Должно быть чёткое описание API. А далее - плагинная архитектура. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 14:35 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
MasterZivТо, что ты хочешь, это не .dll, это RTTI или Reflection. В .net он есть. В COM/OLE он есть. .DLL тут вообще ни при чём. Конечно согласен с этим /и ранее высказал аналогичное суждение "Их линия forever - .Net, а там в псевдокоде все, что мне нужно и больше имеется ..."/ Суть в том, что какими путями достигаются эти цели. ... Ты ещё не понял, что "изучать, изучать, ... " -- это суть профессии программиста ? Знаешь несмотря на многие минусы и специфическую направленность технологии разрабатываемой фирмой 1С многие вопросы на порядок быстрее решаются. Так вот понятие производительности работы программисты включает много составляющих. В т.ч. и время затрачиваемое на "изучение, изучение, ...", "кодирование, кодирование, ..." ... Направленность моего проекта в какой-то мере будет решать увеличения производительности работы прграммиста /в свете вышесказанного .../ Меня бы больше устроила технология в которой я не "изучаю, изучаю, ...", а занимаюсь эффективно реализаций проекта /может быть и коряво сказано, но не хочу на целый лист разжевывать эти мысли .../ Так вот технология COM мне знакома /но не считаю себя крутым спцецом в ней/ и используема. И среды программирования C#, ... очень интересны, но на мой взгляд "трудоемки" в работе. Сотни классов с сотнями методами ... ... ... ... Нужно соглашение о взаимодействии, нужны структуры данных и их описание, и поддержка их с двух сторон. Безусловно такой механизм будет, а как иначе? И калькулятор будет понимать какая математика /функции/ ему доступны. Мог бы тебе на этот вопрос и не отвечать, потому что в твоем вопросе находится и ответ. Правда раскрыл некую маленькую часть архитектуры. PS: Я пока не могу сказать будет ли разрабатываемая мной технология тем к чему стремлюсь. Не потому что сомневаюсь в принятых архитектурных решениях, а потому что еще не могу ни чего сказать об производительности ее /буду стараться/. Т.е. вывод простой - автор пытается создать некую rapid технологию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 14:55 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
MasterZivи занафига тебе нужно вызывать "всё что угодно" из .DLL -- тоже не понятно. Это просто вообще никогда не нужно. Нужно вызывать только то, что МОЖНО вызывать, что было придумано для того, чтобы БЫТЬ ВЫЗВАННЫМ. В какой-то мере в предыдущем post дан ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 15:12 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012 - (1) производить demangle без использования UnDecorateSymbolName function http://msdn.microsoft.com/en-us/library/windows/desktop/ms681400(v=vs.85).aspx. - (2) вызывать во время run-time работы программы на выполнение функции из произвольных dll Если речь о произволных dll, как Вы планируете решение следующей проблемы ( http://support.microsoft.com/kb/168958/en-us): To Export an STL Class 1. In both the DLL and the .exe file, link with the same DLL version of the C run time. Either link both with Msvcrt.lib (release build) or link both with Msvcrtd.lib (debug build). т.е. если библиотечная функция возвращает STL класс, необходимо, чтобы программа и библиотека были собраны с одинаковыми runtime? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 15:25 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
x1ca4064как Вы планируете решение следующей проблемы Ну система не будет монолитной и программисты смогут расширять ее другими объектами. По всей видимости будут некоторые ограничения /соглашение/ на правила кодирования. В частности на параметры и возвращаемые значения. PS: Насколько продвинуто удастся решить этот вопрос не знаю ... На первом этапе сделаю возможность выполнения функций, использующих стандартные типы. Ну а затем буду улучшать /нужно же с чего-то начинать, а не грезить фантазиями/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 15:56 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012, чем всё это лучше чем COM? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 16:17 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Изопропилчем всё это лучше чем COM? Если хватит сил довести проект "до кондиции", то у программистов появится гораздо больше времени на лазанье по internet ... ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 16:24 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012у программистов появится гораздо больше времени на лазанье по internet .... ... У каких программистов? Тех, которые сейчас 24 часа в сутки программируют калькуляторы?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 16:39 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
petalvikТо есть сама идея вызывать любую функцию изначально абсурдна. Интересно откуда /не применительно к petalvik/ зачастую так и брызжет категоричность в суждениях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 16:42 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovУ каких программистов? Тех, которые сейчас 24 часа в сутки программируют калькуляторы?.. Нет у тех, которые используют firebird. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 16:43 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Нет - у тех, которые используют firebird ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 16:46 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Нет у тех, которые используют firebird. а что такого специфичного у Firebird? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 16:54 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012у тех, которые используют firebird. Но им не надо вызывать "разные функции из разных DLL". Они работают исключительно с fbclient.dll и сигнатуры всех функций в ней описаны раз и навсегда. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 16:56 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, речь видимо об EXTERNAL FUNCTION ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 16:58 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
На внешние функции накладываются вполне конкретные ограничения и эти функции опять выпадают из категории "любые". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 17:00 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovНа внешние функции накладываются вполне конкретные ограничения и эти функции опять выпадают из категории "любые". Нет речь идет о том, что firebird - источник данных для какого-то прикладного решения. Так вот экономия времени будет в использовании rapid системы для решения задачи. PS: Ребят ну у меня уже начинают щеки краснеть ... Еще ни чего нет. Что мы обсуждаем? Ну планов много. В частности в rapid систему будут интегрированы многие технологи /в частности OpenGL/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 17:09 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Нет речь идет о том, что firebird - источник данных для какого-то прикладного решения. а если PostgreSQL -то система работать не будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 17:16 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Изопропила если PostgreSQL -то система работать не будет? Ряд технологий интегрирую в частности ODBC. Если разработчики firebird посчитают нужным интегрировать в rapid систему, то допишут новый объект /не plugin. А может быть можно сказать, что и plugin. Разница будет в том, что object будет восприниматься как стандартный объект системы ... Какой функционал разработчик выставит, то и будет поддержан системой. А можно и ничего не делать. Тогда developer будет использовать, то что поддержано самой системой - ODBC/. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 17:27 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012 Нет речь идет о том, что firebird - источник данных для какого-то прикладного решения. Так вот экономия времени будет в использовании rapid системы для решения задачи.В каком месте RAD доступ к данным становился "медленным звеном"??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 17:34 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovВ каком месте RAD доступ к данным становился "медленным звеном"??? Дело не в firebird. Ответ был дан на утверждение "Тех, которые сейчас 24 часа в сутки программируют калькуляторы?." Просто напомнил Dimitry Sibiryakov, что кроме разработки калькулятора систему можно будет использовать и для других целей. Например разработки информационных систем, использующих СУБД /может быть и для games подойдет/ PS: Ну вот напложу конкурентов. Напишут 20-ть rapid систем. До меня очередь и не дойдет. Да ни чего. У меня припасено многооо чего вкусненького чего у других не видел. Но об них после беты /альфу буду гонять сам как "сидорову козу"/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 17:49 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Предлагаю прекратить обсуждение не существующей rapid системы. dll "мы" тоже решили не развивать. Обоснование полезности вызова любой функции тоже вроде рассмотрели PS: На мой взгляд, если имеется потребность в обсуждении темы - "Rapid системы с которой бы я хотел работать", то для этого было бы лучше завести новый topic. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 18:09 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Обоснование полезности вызова любой функции тоже вроде рассмотрели ну если разрабатывается очередной скриптовый язык - почему бы и не попытаться вызвать произвольную функцию. а откуда возьмутся метаданные - из tlb, .net сборки, отдельно приложенного файла или явной декларации - какая разница. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 18:16 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Изопропилну если разрабатывается очередной скриптовый язык В какой-то мере да. PS: Ну а что такое 1С как не: оболочка + ядро + скриптовый язык. Без языка ни как /говорить будет не чем/ ... И каждый из них имеет свои фичи ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 18:33 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Что мы обсуждаем?вот это сообщество и пытается понять, что же мы обсуждаем )))) а в ответ: ещё ничего не реализовано, обсуждать нечего. И? пора, может, уже сформулировать тему, или вопрос, кмк ))) Или это блог? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 18:34 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
egorychИли это блог? Да какой блог? Я пытался многократно все свернуть к тебе поднятой в topic, а меня напрягли другими вопросами. PS: Другие темы я не собирался обсуждать. Но вопросы были заданы и сказать на это - "Отстань" не имел морального права. Выше в topic ведь предложил открыть новый /-ые/ topic и в них обсудить интересующие вопросы. Хотя по идее эти вопросы должны обсуждаться не подразделе "C++". Потому и предлагаю закончить обсуждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 18:44 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012, было трудно понять, что требуется. libffi - смотрел? https://sourceware.org/libffi/ использование в разных интерпретаторах http://luajit.org/ext_ffi.html https://cffi.readthedocs.org/en/release-0.8/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 18:56 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
ИзопропилВладимир2012, было трудно понять, что требуется. Благодарю. Ссылка http://luajit.org/ext_ffi.html была у меня. Похоже https://sourceware.org/libffi/ выполняет то что мне нужно. У меня правда декларацию функции программист может не задавать, так как программно получаю ее из dll путем demangle ... PS: Скорее всего поспешил с вопросом в форум. Пока тема думаю тема исчерпана. Если интересно кому могу в этом topic доложить о результатах ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 19:41 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012У меня правда декларацию функции программист может не задавать, так как программно получаю ее из dll путем demangle ... Интересно, что ты получаешь в результате demangle обычной extern "C" stdcall функции?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 20:02 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Интересно откуда ... зачастую так и брызжет категоричность в суждениях? Потому что вызывать любую функцию из любой dll - действительно абсурд. Если два первых примера не убедили, приведу третий. Вызовешь ты некую неизвестную функцию из левой dll, а она жёсткий диск отформатирует. Что дальше? Вот чтобы такого не случалось, должен быть некоторый контракт (API), которому должны соответствовать вызываемые функции. Должны быть средства верификации безопасности сторонних dll, соответствующих контракту. Это должно быть прописано в метаинформации. В управляемых средах - .NET, Java - это делается элементарно. В нативном коде нужно что-то изобретать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 20:09 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Мне понятно почему возможность в рантайме сформировать массив аргументов и вызвать функцию нужна в других языках, где нет поддержки вызова внешних функций. Что мне до сих пор не понятно, нафига это в С++, когда тут можно напрямую (средствами языка) вызвать любую функцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 20:26 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Ещё более непонятно, что делать когда вызывающий и вызываемый скомпилированы не просто с разными рантаймами одного компилятора, а разными компиляторами и при этом не имеет никаких "предварительных договорённостей". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 20:30 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
petalvikВызовешь ты некую неизвестную функцию из левой dll, а она жёсткий диск отформатирует. Что дальше? Так и твой винчестер будет отформатирован если возьму и добавлю в функцию какой-нибудь системной библиотеки это действие. Речь шла о программной возможности это сделать /это я считал само разумеющимся или что нужно буквально все разжевывать?/. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 20:31 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovЕщё более непонятно, что делать когда вызывающий и вызываемый скомпилированы не просто с разными рантаймами одного компилятора, а разными компиляторами и при этом не имеет никаких "предварительных договорённостей". Да вроде же уже объяснял необходимость ... PS: Вот мне подсказали ссылку https://sourceware.org/libffi/. Почитай о чем там. У меня вариация той же темы /не более того/. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 20:37 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012У меня вариация той же темы /не более того/.Соглашения по вызовам это фигня. С памятью как работать будем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 20:40 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
petalvikВ нативном коде нужно что-то изобретать. всё украдено придумано до нас и внедряемый манифест и цифровая подпись для нативного кодв ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 20:40 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyЧто мне до сих пор не понятно, нафига это в С++, когда тут можно напрямую (средствами языка) вызвать любую функцию. С оговоркой "заранее известную". В той же Firebird приходится неприятно выкручиваться для вызова User-Defined Function. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 20:46 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovСоглашения по вызовам это фигня. С памятью как работать будем? управление памятью - часть соглашений о вызовах(CoTaskMemAlloc,GlobalAlloc,NetApiBufferAllocate и т д) ну а если malloc - то приплыли, только загружать в отдельный процесс и воевать там ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 20:47 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
О чём и речь - бессмысленно пытаться делать интерфейс к "вызвать функцию любой DLL", если этим невозможно пользоваться. А пользоваться невозможно, т.к. раньше или позже мы натолкнёмся на те или иные глобальные вещи и начнём разрабатывать некое специализированное API. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 20:53 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovС памятью как работать будем? https://sourceware.org/libffi/ Я еще толком не разбирался с этой библиотекой. Хотя вот в manual сказано: "For instance, an interpreter may be told at run-time about the number and types of arguments used to call a given function. Libffi can be used in such programs to provide a bridge from the interpreter program to compiled code. " Что тебя смущает, то? Интерпретатор некоим образом понимает, что производится вызов функции, определяет тип возвращаемого значения, аргументов, распределяет память, вызывает run time функцию ... /это всего лишь пример. На самом деле все будет "так да не так"/. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 21:09 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Что тебя смущает, то?То, например, что в своё время я изучал SAA REXX API и знаю, что соглашения о вызовах эта мелочь, на которую, в общем-то, можно не обращать внимания. И автоматическое распознавание сигнатур никак не меняет ситуацию. Семантика, в общем, много важнее синтаксиса, а искусственный интеллект так и не создан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 21:20 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovС оговоркой "заранее известную". В той же Firebird приходится неприятно выкручиваться для вызова User-Defined Function. Система знает о тех dll c которыми она будет работать, а значит /грубо говоря/ знает все об, имеющихся там функциях /тип возвращаемого значения, количество, порядок и типы параметров/. Кроме того имеется некая meta информация об назначении функций /предположим к какой категории она относится/, ... Какую-то часть данных можем получать на этапе получения псевдокода. При этом в боевых условиях будет использоваться не псевдокод, а машинный В какой-то мере те же идеи по оптимизации выполнения, что и в .Net ... Некоторые скажут, а зачем мне все это если уже имеется .Net. И по своему будут правы. Мне так придется решать эти вопросы в силу той задачи, которую решаю. PS: Скажете зачем все это? Ну так такой же вопрос можете задать разработчикам интерпретаторов, ... ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 21:26 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Basil A. SidorovС памятью как работать будем? https://sourceware.org/libffi/ Я еще толком не разбирался с этой библиотекой. Хотя вот в manual сказано: "For instance, an interpreter may be told at run-time about the number and types of arguments used to call a given function. Libffi can be used in such programs to provide a bridge from the interpreter program to compiled code. " Что тебя смущает, то? Интерпретатор некоим образом понимает, что производится вызов функции, определяет тип возвращаемого значения, аргументов, распределяет память, вызывает run time функцию ... /это всего лишь пример. На самом деле все будет "так да не так"/.Ты не правильно переводишь. an interpreter may be told at run-time = в рантайме интерпретатору могут сказать. Он (интерпретатор) не сам понимает, а ему говорят. Вот это и есть камень преткновения во всем этом топике. Ты желаешь чтобы вызывающий сам всегда понимал какие там параметры требуются. Мы говорим что в универсальном виде это не решается. Да и в не универсальном виде нужно чрезвычайно редко. Да, в некоторых случаях нужно и можно сделать вызов функции из внешнего модуля если ты не знаешь ее списка параметров, но это нужно чрезвычайно редко. Настолько редко что я сейчас сходу даже не могу назвать когда мне это бывало необходимо. Но каждый раз это все равно решалось более элегантно и проще через враппер с заранее определенным числом параметров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 21:26 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovСемантика, в общем, много важнее синтаксиса, При создании объекта системы конечно будет оговорен API, который все "донесет" об всех своих талантах. И научит систему в каких случаях и по какому случаю к нему можно обратиться. Посмотри например в 1С на раздел создания внешних компонент. У меня все будет не так организовано, но суть останется та же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 21:36 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Посмотри например в 1С на раздел создания внешних компонент ну на это лучше не смотреть. в вот P/Invoke из .net - куда больше информации даст о вызове функций из dll ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 21:41 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
White OwlДа, в некоторых случаях нужно и можно сделать вызов функции из внешнего модуля если ты не знаешь ее списка параметров, Опять двадцать-пять. Мне нужна возможность run-time выполнения функции, о которой система знает все. Семантику, назначение функции, параметрах, ... Т.е. как бы meta информация вся есть и согласно этим данным обеспечиваем ее вызов на выполнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 21:46 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Изопропилну на это лучше не смотреть Ну а почему бы и нет. Чем не пример? Разработчик создает внешнюю компоненту который для 1С становится родным объектом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 22:02 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012White OwlДа, в некоторых случаях нужно и можно сделать вызов функции из внешнего модуля если ты не знаешь ее списка параметров, Опять двадцать-пять. Мне нужна возможность run-time выполнения функции, о которой система знает все. Семантику, назначение функции, параметрах, ...Тогда что тебе не нравится в нынешней DLL? Ты сам себе противоречишь. То ты страдаешь от отсутствия мета-инфы, то она у тебя уже есть. Так что, да. Опять двадцать-пять. Опиши задачу которую ты решаешь. Не можешь? Это торговая тайна? Тогда ты просто необразованный болтун. Ну или троль, что еще хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 22:46 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Изопропилну на это лучше не смотреть Ну а почему бы и нет. Чем не пример? Разработчик создает внешнюю компоненту который для 1С становится родным объектом.И? Ты прямо сейчас это можешь взять и сделать. Делаешь модуль соблюдая API описанный в документации на 1С и получаешь свой собственный "родной объект". Что тебя останавливает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 22:49 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Чем не пример? пример. Но есть и получше, Python -C и вариации типа cython ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 22:57 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
White OwlТы сам себе противоречишь. То ты страдаешь от отсутствия мета-инфы, то она у тебя уже есть. Из самого первого topic ясно было сказано, что я знаю и тип возвращаемого значения и данные об параметрах /путем demangle из dll/. Но те кто читают topic по диагонали слева на право, а другие с право на лево и при этом пропускают блоками текст прицепились ко мне с претензиями - зачем тебе выполнять неизвестно какую функцию и не известно зачем. Но так как меня не слушали, то я попытался пойти путем, требовавших от меня логичности /так как по их мнению то чего я хочу ни когда не кому не нужно/. Теперь ты меня обвиняешь в моей нелогичности Вообщем ... PS: Я не троль, но мне и самому это уже поднадоело. Да и раз 5 или более я уже предагал прекратить обсуждение. Механизм использования внешних компонент 1С это довольно удачный пример. 1С получает данные об названиях функций, и количестве параметров и на основании этих данных с использованием IDispatch обеспечивает вызов функций. ... Опиши задачу которую ты решаешь. Я что мало привел примеров ... Давайте закончим на этом обсуждение /это уже не смешно .../ Тем более, что Изопропил привел неплохие ссылки и в принципе думаю он понял чего автор хочет добиться - возможность run-time выполнения функции, о которой система знает все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 23:49 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
White OwlДелаешь модуль соблюдая API описанный в документации на 1С и получаешь свой собственный "родной объект". Что тебя останавливает? Да ни чего меня не останавливает. Свою rapid систему пытаюсь разработатью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2014, 23:54 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Слушайте перечитал придирчиво и многократно topic в котором попросил помощи. Что в нем непонятного или абсурдного, что меня 20 или 30 раз просили рассказать чего я хочу? PS: . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 00:17 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012 Из самого первого topic ясно было сказано, что я знаю и тип возвращаемого значения и данные об параметрах /путем demangle из dll/.Вот с самого первого вопроса тебя и спрашивают зачем ты это делаешь? Если система знает все о вызываемой функции, то ей не нужно ничего про эту функцию узнавать. Уже и так все известно. Если же о функции не известно хоть что-нибудь, то зачем эту функцию вызывать? demangle имеет смысл делать только при взломе или поиске ошибки линковки, для реальной работы это совершенно не нужно. Если ты разрабатываешь библиотеку которая делает demangle то значит ты сумел придумать еще какую-то задачу. Вот это у тебя и спрашивают. Владимир2012 Я что мало привел примеров ...Ты их вообще не привел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 01:29 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012Из самого первого topic ясно было сказано, что я знаю и тип возвращаемого значения и данные об параметрах /путем demangle из dll/. Видимо, один ты тут не знаешь, что во-первых, способ обработки имён компиляторозависимый, а во-вторых, функции из DLL обычно экспортируются в С-форме. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 01:34 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
White Owldemangle имеет смысл делать только при взломе или поиске ошибки линковки, для реальной работы это совершенно не нужно. Изопропил же привел хорошие ссылки. Зайди к примеру на http://luajit.org/ext_ffi.html. Тот вопрос, который решаю конечно не типичный как бы это сказать для "пользовательских" задач. А вот для интерпретаторов, ... - типичен. demangle использую лишь для того, чтобы избавить программиста от передачи декларации функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 08:31 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир. Давайте ваши тезисы перенесём в блог в домене sql.ru. А здесь - закончим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 10:37 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012demangle использую лишь для того, чтобы избавить программиста от передачи декларации функции. такие функции ещё поискать нужно. то что мне встречалось - это функции, не предназначенные для вызова внешним кодом, по ошибке попавшие в экспорт. Да и сложности совсем не с прототипом, а скорее с указаниями по управлению памятью(который из сигнатуры никак не добыть) -кто и когда должен выделить и освободить память, и каким механизмом(GlobalAlloc,CoTaskMemAlloc) -строки NULL-terminated или со счётчиком (BSTR) -при передаче массивов - как добыть длину (из какого параметра, с каким смещением, по ограничителю) -входные-выходные и т д ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 11:00 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
ИзопропилДа и сложности совсем не с прототипом, а скорее с указаниями по управлению памятью(который из сигнатуры никак не добыть) Любопытно услышать это. Ведь topic и начинался с этого. PS: М-да ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2014, 12:42 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Владимир2012, чтоб не придумывать свой язык для описания прототипов можно взять P/Invoke (из .net) http://www.pinvoke.net/ просто парсить .h - не поможет - способ выделения памяти в документации описывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2014, 13:05 |
|
||
|
Про улучшение DLL
|
|||
|---|---|---|---|
|
#18+
Изопропилчтоб не придумывать свой язык для описания прототипов можно взять P/Invoke (из .net) Разработка не базируется на технологии .Net /а вот идеи заимствуются и из нее и из других технологий/. PS: Думаю нужно закончить обсуждение в этом topic. Если считаешь целесообразным, то дай мне свой e-mail ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2014, 13:41 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2019236]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
113ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 203ms |

| 0 / 0 |
