Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / обертка-клон для dll / 25 сообщений из 78, страница 1 из 4
29.11.2019, 07:33
    #39896039
ills
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
Здравствуйте, уважаемые форумчане!
К несчастью, в работе с dll у меня огромный пробел, а тут надо сразу, да еще и не совсем стандартно. В общем, осваиваю на бегу, но без вашей помощи не обойтись.
К сути вопроса: есть dll1 и приложение, которое с этой dll1 успешно работает. Но есть потребность несколько расширить функционал, добавив сбор статистики. Ни разработчики dll1, ни разработчики приложения дорабатывать продукт не готовы, т.к. им этот функционал не интересен, поэтому надо как-то выкручиваться. В наличии dll, h и lib файлы. На выходе надо получить dll2, которая для приложения должна выглядеть совершенно так же, как dll1, но в некоторых функциях кроме того, что делает dll1, должны выполняться дополнительные действия.
Теорию по dll изучаю, а как сделать такой клон, пока понять не могу. Объясните, пожадуйста, на простейшем примере, как это должно выглядеть?
...
Рейтинг: 0 / 0
29.11.2019, 07:59
    #39896049
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
ills,

Попробуй такую схему: пишешь dll, которая загружает и вызывает функции dll1. Подменяешь ей исходную dll1. Если всё работает - вставляешь свои костыли в вызовы. Напиши сначала сам минимальный пример, в котором будет приложение, dll и одна функция. Попробуй её подменить.
...
Рейтинг: 0 / 0
29.11.2019, 08:08
    #39896052
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
Читай Рихтера Windows via C/C++ про перехват вызовов API-функций.
...
Рейтинг: 0 / 0
29.11.2019, 08:42
    #39896067
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
ills
добавив сбор статистики
какой? Для кого?
Для прогеров статистика это количество вызовов function X.
Для руководства это посещение страницы Y 567 раз.
Для второй, надо не перехватывать, а брать исходники и вставить в конструктор класса Y слово Log()
...
Рейтинг: 0 / 0
29.11.2019, 08:43
    #39896070
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
ills,
Если есть исходники и ты программист, то глупо ими не воспользоваться.
...
Рейтинг: 0 / 0
29.11.2019, 08:46
    #39896071
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
Dima T
Читай Рихтера Windows via C/C++ про перехват вызовов API-функций.

это уже тяжёлая артиллерия

обычно хватало варианта от crutchmaster


ills
Но есть потребность несколько расширить функционал, добавив сбор статистики. Ни разработчики dll1, ни разработчики приложения дорабатывать продукт не готовы

а решение этой проблемы не из области программрования на С
...
Рейтинг: 0 / 0
29.11.2019, 11:23
    #39896195
ills
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
crutchmaster,

Мне понятно, что надо в свой проект подключить dll1.h и dll1.lib и реализовать вызов соответствующих функций. Мне не понятно, как получить в итоге клон, ведь функции исходной dll и новой называются одинаково?
Например, в библиотеке dll1 есть экспортируемая функция, которая выводит банальное "Hello world"
Код: plaintext
1.
extern "C" dll1_API void hello_world();


В "расширенном" клоне эта функция должна к этому "Hello world" выводить еще, например, "Привет, мир".

Для того, чтобы все заработало, мне надо сделать следующее:
1) переименовать библиотеку dll1 в dll1old (она же будет использоваться, в моей библиотеке, а моя библиотека должна называться dll1, чтобы с ней могло работать приложение)
2) добавить в проект dll1.h от исходной библиотеки и подключить dll1.lib
3) в своем проекте создать cpp и h файлы, в которых будет реализация новой функции hello_world. Или h-файл создавать не надо, т.к. он идентичен добавленному от исходной библиотеки? А если надо, то что в нем прописывать?
4) и, собственно, в cpp-файле
Код: plaintext
1.
2.
3.
4.
5.
void hello_world()
{
	cout << "Привет, мир" << endl;
	hello_world();
}


Все правильно, или я что-то не так понимаю?
...
Рейтинг: 0 / 0
29.11.2019, 11:23
    #39896196
ills
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
Dima T,
Спасибо за рекомендацию, изучу
...
Рейтинг: 0 / 0
29.11.2019, 11:26
    #39896199
ills
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
PetroNotC Sharp,

так нет исходников) и dll, и приложение - сторонние разработки. К разработчикам за расширением функционала обращались, получили отказ
...
Рейтинг: 0 / 0
29.11.2019, 11:32
    #39896210
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
ills
PetroNotC Sharp,

так нет исходников) и dll, и приложение - сторонние разработки. К разработчикам за расширением функционала обращались, получили отказ
это прояснили. Понятно.
А про статистику промолчали.
Так как вам нужна статистика совершенно чужого приложения. В народе говорят что это взлом.
...
Рейтинг: 0 / 0
29.11.2019, 11:42
    #39896221
ills
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
PetroNotC Sharp,

Статистика - это несколько обобщенно и упрощенно) В некоторых функциях надо добавить запрос от пользователя дополнительных параметров, затем запрос к web-сервису для проверки этих параметров на актуальность, и еще добавить работу с дополнительной БД, в которую будут записываться результаты и еще некоторая информация, необходимая в дальнейшем для составления отчетов и контроля
...
Рейтинг: 0 / 0
29.11.2019, 11:44
    #39896225
ills
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
PetroNotC Sharp,

собственно, с разработчиком dll эта работа согласована, но исходниками, естественно, никто не поделится (да это и бессмысленно, т.к. dll время от времени обновляется)
Возможно, это и можно называть взломом, но тут цель сугубо созидательная, ни правообладателю исходной dll, ни правообладателю приложения имущественного вреда нанесено не будет
...
Рейтинг: 0 / 0
29.11.2019, 11:55
    #39896233
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
ills
В некоторых функциях надо добавить запрос от пользователя дополнительных параметров,
вы исполнитель или постановщик?
Еще конкретнее. Имя функции, ее параметры дайте.
...
Рейтинг: 0 / 0
29.11.2019, 11:57
    #39896236
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
ills
PetroNotC Sharp,

так нет исходников) и dll, и приложение - сторонние разработки. К разработчикам за расширением функционала обращались, получили отказ

Ну так и не трогай dll1. Создай еще одну dll, а в .h добавь декларацию экспортируемых функций.
...
Рейтинг: 0 / 0
29.11.2019, 12:02
    #39896242
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
PetroNotC Sharp,

Это не взлом. Это танцы на костылях по граблям и ямам. Через год надо будет обновить приложение, а ТС найдёт нормальную работу. Прослойка отвалится, приложение отвалится, сорцы потеряют. По-доброму тем разрабам надо приделать какие-то внешние хуки в своё приложение, а не заставлять клиентов заниматься чёрти чем.
...
Рейтинг: 0 / 0
29.11.2019, 12:06
    #39896249
ills
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
PetroNotC Sharp,

я исполнитель (собственно, это было обозначено в первом вопросе). Как может помочь название функции и ее параметры, если вопрос у меня в другом? Или это для того, чтобы убедиться, что я не собираюсь сделать что-то противозаконное?
...
Рейтинг: 0 / 0
29.11.2019, 12:09
    #39896250
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
ills,
Я сомневаюсь в идее. Поломать то все можно.
Например, как вы добавите параметр если их длл его не примет?
...
Рейтинг: 0 / 0
29.11.2019, 12:10
    #39896251
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
ills
Код: plaintext
1.
2.
3.
4.
5.
void hello_world()
{
	cout << "Привет, мир" << endl;
	hello_world();
}


Где добавка параметра?
...
Рейтинг: 0 / 0
29.11.2019, 12:10
    #39896252
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
ills
Мне не понятно, как получить в итоге клон, ведь функции исходной dll и новой называются одинаково?
забыть про статическую линковку подменяемой библиотеки к проекту и вызывать её функции динамически, используя LoadLibrary, GetProcAddress, etc
...
Рейтинг: 0 / 0
29.11.2019, 12:12
    #39896253
ills
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
crutchmaster,

Возможно, через год разработчики приложения поймут, что не только нам нужен этот функционал, и добавят его в новый релиз и необходимость в этой прослойке отпадет (и это будет здорово на самом деле). Естественно, разработчикам dll это не интересно, т.к. в ней это все реально не нужно, но мы тут заложники ситуации, поэтому приходится как-то выкручиваться :(
...
Рейтинг: 0 / 0
29.11.2019, 12:13
    #39896254
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
ills,

Что за приложение хоть и что оно делает?
...
Рейтинг: 0 / 0
29.11.2019, 12:13
    #39896257
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
ills
crutchmaster,

Возможно, через год разработчики приложения поймут, что не только нам нужен этот функционал, и добавят его в новый релиз и необходимость в этой прослойке отпадет (и это будет здорово на самом деле). Естественно, разработчикам dll это не интересно, т.к. в ней это все реально не нужно, но мы тут заложники ситуации, поэтому приходится как-то выкручиваться :(
понятно. Денег им нет заплатить и решили что сами все сделаете.
Ничего личного.
...
Рейтинг: 0 / 0
29.11.2019, 12:15
    #39896259
ills
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
PetroNotC Sharp,

параметры добавлять не нужно в функции, они остаются без изменений. Т.е. вместо
Код: plaintext
1.
cout << "Привет, мир" << endl;

будет вывод диалога для ввода значения и запрос к web-сервису для проверки этого значения на актуальность. И уже после этих проверок выполнение функции исходной dll
...
Рейтинг: 0 / 0
29.11.2019, 12:16
    #39896260
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
ills
вывод диалога
а если там поток?
...
Рейтинг: 0 / 0
29.11.2019, 12:17
    #39896261
ills
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обертка-клон для dll
PetroNotC Sharp,

да нет, там гораздо сложнее, они не видят смысла в этой доработке и не хотят нагружать приложение ненужным функционалом
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / обертка-клон для dll / 25 сообщений из 78, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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