powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / обертка-клон для dll
25 сообщений из 78, страница 3 из 4
обертка-клон для dll
    #39896334
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
внутри новой DLL. Без изменений старой DLL
а толку. То есть в посреднике?
Будет очередь в один поток и узкое место старая дллка. Как COM раньше.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896336
ills
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan),

именно) было бы мое (наше), то и проблем бы никаких
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896339
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
внутри новой DLL. Без изменений старой DLL
а толку. То есть в посреднике?
Будет очередь в один поток и узкое место старая дллка. Как COM раньше.

Нет, в DllLoad() создаём свой поток. Он спит на условной переменной. Когда приходит вызов функции новой DLL... Нам осталось только передать информацию для запроса на сервер и записи данных в созданный поток. И перенаправить вызов в старую DLL.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896340
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,
Я как бы этого в его ответах просто не вижу, вся речь про dll и как её подцепить
Поэтому у меня и возникло это предположение. Может тут реально надо начинать с "включить розетку"

В обратной же ситуации для начала надо понять, не отвалится ли dll-ка при динамической загрузке
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896342
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
А я говорил про линковку и неявную загрузку DLL, если ты понимаешь о чём я говорю.
А если, всё-таки, подумать?
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896343
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav,
Я dll на плюсах не делал. А вот в exe везде заводил пространство имён.
- в дллках есть такое? Решает вашу проблему?

Я несколько усложнил задачу: мы подключаем две сторонние dll, которые экспортируют две Си-шные функции с одним именем. А в Си нет неймспейсов. Свою то функцию и переименовать можно.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896345
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
Может тут реально надо начинать с "включить розетку"
можно попробовать. Я ему сказал, давай сигнатуру. Не хочет.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896347
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Нет, в DllLoad() создаём свой поток. Он спит на условной переменной. Когда приходит вызов функции новой DLL... Нам осталось только передать информацию для запроса на сервер и записи данных в созданный поток. И перенаправить вызов в старую DLL.
мы решаем проблему заморозки?
Чтобы не было заморозки надо в посреднке за 0,05 сек передать управление обратно в exe. Дллка старая успевала. А ты как успеешь на сайт сходить?
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896351
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
А в Си нет неймспейсов
легаси код рассматривать я пас. Не интересно.
Только если математика какая на 4 ядра процессора.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896352
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
Нет, в DllLoad() создаём свой поток. Он спит на условной переменной. Когда приходит вызов функции новой DLL... Нам осталось только передать информацию для запроса на сервер и записи данных в созданный поток. И перенаправить вызов в старую DLL.
мы решаем проблему заморозки?
Чтобы не было заморозки надо в посреднке за 0,05 сек передать управление обратно в exe. Дллка старая успевала. А ты как успеешь на сайт сходить?

Я передаю информацию о запросе на сервер в другой поток - другой поток будет лезть на сервер. И сразу же вызываю старую dll, а потом сразу возвращаю управление в exe.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896353
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
в DllLoad() создаём свой поток.

Что значит "в DllLoad()"?
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896359
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Я передаю информацию о запросе на сервер в другой поток - другой поток будет лезть на сервер. И сразу же вызываю старую dll, а потом сразу возвращаю управление в exe.
ну дак инфа не успеет. Поезд уйдет.
Представь если я на onPaint строки таблицы спрашивал каким цветом красить должников в dll?
1000 запросов в сек.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896364
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
petrav
Я передаю информацию о запросе на сервер в другой поток - другой поток будет лезть на сервер. И сразу же вызываю старую dll, а потом сразу возвращаю управление в exe.
ну дак инфа не успеет. Поезд уйдет.
Представь если я на onPaint строки таблицы спрашивал каким цветом красить должников в dll?
1000 запросов в сек.

Так дело то в том, что EXE в onPaint() даже не предполагает, что есть какая-то БД, он думает, что общается со старой DLL - она ему всю инфу даёт для отрисовки. А прослойка в новой DLL просто статистику пишет в отдельном потоке . Я так вижу задачу.

Другое дело, что там в прослойка-dll планировался какой-то запрос к пользователю ещё (GUI?).
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896384
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
petrav
Т.е. я не могу подключить две dll если у них экспортируемые функции совпадают по названиям?

Нужен аргумент линковщика типа: --changeName=dll1.lib:funcName:newFuncName. И руками исправить заголовочник dll1.h.
да, это выход, но так скучно)))
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896389
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Другое дело, что там в прослойка-dll планировался какой-то запрос к пользователю ещё (GUI?).
логирование без проблем.
Проблема в модальных диалогах и т.д.
И получения переменной без хидера.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896401
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills
В наличии dll, h и lib файлы.


Сколько прототипов в .h?
Используется ли декорация имен?
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896543
ills
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petrav,

а как это делается? где можно об этом почитать?
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896567
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills
petrav,

а как это делается? где можно об этом почитать?

То что я описал достаточно сложно. Тут на пальцах не расскажешь. Нужно для начала Вам хотя бы создать эту промежуточную dll, которая будет просто вызывать старую dll и больше ничего.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896633
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills
. В наличии dll, h и lib файлы. На выходе надо получить dll2, которая для приложения должна выглядеть совершенно так же, как dll1, но в некоторых функциях кроме того, что делает dll1, должны выполняться дополнительные действия.



Как эти действия должны выглядеть?
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896657
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ills
На выходе надо получить dll2, которая для приложения должна выглядеть совершенно так же, как dll1, но в некоторых функциях кроме того, что делает dll1, должны выполняться дополнительные действия.


Когда я решал подобные задачи, я использовал 2 пути:
1. Когда библиотека экспортирует мало функций (мой критерий до 10-15), я писал библиотеку, которая экспортирует тот же список функций, что и оригинал, затем подкидывал программе свою библиотеку, которая уже и подгружала оригинал, в который форвадила вызовы. Пример - перехват функций DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer у оле-библиотеки.

2. Если библиотека экспортирует много функций, я внедрял в процесс свою библиотеку, которая перехватывала обращения только к интересующим меня функциям. Пример - перехват файловых операций Kernel32.dll

Читал, что есть третий путь - создание специальной библиотеки, в секции экспорта которой сразу можно указать, что данная функция экспортируется данной библиотекой, а реализована в другой, но сам этот путь не исследовал.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896900
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064
Читал, что есть третий путь - создание специальной библиотеки, в секции экспорта которой сразу можно указать, что данная функция экспортируется данной библиотекой, а реализована в другой, но сам этот путь не исследовал.
в сумму просто не входит оплата московских понтов, вакуха явно расчитана на регионы.

Дмитрий Мух
alexeyvg
пропущено...
Я тоже вашу логику не понимаю.

Что с того, что "вам хватит" эти 2-3 вакансии, если на них претендует ещё 5000 человек?

Вам же не 2-3 оффера дали, которые вам достаточно заапрувить, вы просто увидели 3 подходящих вакансии.

Это не описывает рынок.
5000? ну вы и загнули

подходящих специалистов на хорошие вакансии тоже не много
а из 2-3 подходящих вакансий, один оффер да есть
крайний раз было 2 оффера из 3-х вакансий, последним уже написал, что определился и не пошёл на второе собеседование
немного, но ничтожно редко кто ищет 100% подоходящего канидата, да и то их знают, и если уж впритык как нужно, просто будет личное преложение без перелопачивания 5000 приходящих.

Вот как на мороз сходите, потом раскажете свою саксес-стори. Преложения почти ничего не значат, только реальный кеш - шанс нарваться на обман и оказаться в поиске на пол годика в текущей ситуации очень велик.
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896913
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

пардонс, не туда написал
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896916
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064
Читал, что есть третий путь - создание специальной библиотеки, в секции экспорта которой сразу можно указать, что данная функция экспортируется данной библиотекой, а реализована в другой, но сам этот путь не исследовал.
слабо верится, как минимум один jmp ещё добавится
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896935
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
слабо верится, как минимум один jmp ещё добавится
.def-файлы .
...
Рейтинг: 0 / 0
обертка-клон для dll
    #39896968
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
kealon(Ruslan)
слабо верится, как минимум один jmp ещё добавится
.def-файлы .
там под модулем как я понимаю понимается объектный файл

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


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