|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav внутри новой DLL. Без изменений старой DLL Будет очередь в один поток и узкое место старая дллка. Как COM раньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:09 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
kealon(Ruslan), именно) было бы мое (наше), то и проблем бы никаких ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:12 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav внутри новой DLL. Без изменений старой DLL Будет очередь в один поток и узкое место старая дллка. Как COM раньше. Нет, в DllLoad() создаём свой поток. Он спит на условной переменной. Когда приходит вызов функции новой DLL... Нам осталось только передать информацию для запроса на сервер и записи данных в созданный поток. И перенаправить вызов в старую DLL. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:14 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Я как бы этого в его ответах просто не вижу, вся речь про dll и как её подцепить Поэтому у меня и возникло это предположение. Может тут реально надо начинать с "включить розетку" В обратной же ситуации для начала надо понять, не отвалится ли dll-ка при динамической загрузке ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:14 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav А я говорил про линковку и неявную загрузку DLL, если ты понимаешь о чём я говорю. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:15 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav, Я dll на плюсах не делал. А вот в exe везде заводил пространство имён. - в дллках есть такое? Решает вашу проблему? Я несколько усложнил задачу: мы подключаем две сторонние dll, которые экспортируют две Си-шные функции с одним именем. А в Си нет неймспейсов. Свою то функцию и переименовать можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:16 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
kealon(Ruslan) Может тут реально надо начинать с "включить розетку" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:17 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav Нет, в DllLoad() создаём свой поток. Он спит на условной переменной. Когда приходит вызов функции новой DLL... Нам осталось только передать информацию для запроса на сервер и записи данных в созданный поток. И перенаправить вызов в старую DLL. Чтобы не было заморозки надо в посреднке за 0,05 сек передать управление обратно в exe. Дллка старая успевала. А ты как успеешь на сайт сходить? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:20 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav А в Си нет неймспейсов Только если математика какая на 4 ядра процессора. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:22 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav Нет, в DllLoad() создаём свой поток. Он спит на условной переменной. Когда приходит вызов функции новой DLL... Нам осталось только передать информацию для запроса на сервер и записи данных в созданный поток. И перенаправить вызов в старую DLL. Чтобы не было заморозки надо в посреднке за 0,05 сек передать управление обратно в exe. Дллка старая успевала. А ты как успеешь на сайт сходить? Я передаю информацию о запросе на сервер в другой поток - другой поток будет лезть на сервер. И сразу же вызываю старую dll, а потом сразу возвращаю управление в exe. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:23 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav в DllLoad() создаём свой поток. Что значит "в DllLoad()"? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:26 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav Я передаю информацию о запросе на сервер в другой поток - другой поток будет лезть на сервер. И сразу же вызываю старую dll, а потом сразу возвращаю управление в exe. Представь если я на onPaint строки таблицы спрашивал каким цветом красить должников в dll? 1000 запросов в сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:30 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav Я передаю информацию о запросе на сервер в другой поток - другой поток будет лезть на сервер. И сразу же вызываю старую dll, а потом сразу возвращаю управление в exe. Представь если я на onPaint строки таблицы спрашивал каким цветом красить должников в dll? 1000 запросов в сек. Так дело то в том, что EXE в onPaint() даже не предполагает, что есть какая-то БД, он думает, что общается со старой DLL - она ему всю инфу даёт для отрисовки. А прослойка в новой DLL просто статистику пишет в отдельном потоке . Я так вижу задачу. Другое дело, что там в прослойка-dll планировался какой-то запрос к пользователю ещё (GUI?). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 13:37 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav petrav Т.е. я не могу подключить две dll если у них экспортируемые функции совпадают по названиям? Нужен аргумент линковщика типа: --changeName=dll1.lib:funcName:newFuncName. И руками исправить заголовочник dll1.h. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 14:02 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav Другое дело, что там в прослойка-dll планировался какой-то запрос к пользователю ещё (GUI?). Проблема в модальных диалогах и т.д. И получения переменной без хидера. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 14:06 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills В наличии dll, h и lib файлы. Сколько прототипов в .h? Используется ли декорация имен? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 14:16 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
petrav, а как это делается? где можно об этом почитать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 17:28 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills petrav, а как это делается? где можно об этом почитать? То что я описал достаточно сложно. Тут на пальцах не расскажешь. Нужно для начала Вам хотя бы создать эту промежуточную dll, которая будет просто вызывать старую dll и больше ничего. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 18:19 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills . В наличии dll, h и lib файлы. На выходе надо получить dll2, которая для приложения должна выглядеть совершенно так же, как dll1, но в некоторых функциях кроме того, что делает dll1, должны выполняться дополнительные действия. Как эти действия должны выглядеть? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 23:52 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
ills На выходе надо получить dll2, которая для приложения должна выглядеть совершенно так же, как dll1, но в некоторых функциях кроме того, что делает dll1, должны выполняться дополнительные действия. Когда я решал подобные задачи, я использовал 2 пути: 1. Когда библиотека экспортирует мало функций (мой критерий до 10-15), я писал библиотеку, которая экспортирует тот же список функций, что и оригинал, затем подкидывал программе свою библиотеку, которая уже и подгружала оригинал, в который форвадила вызовы. Пример - перехват функций DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer у оле-библиотеки. 2. Если библиотека экспортирует много функций, я внедрял в процесс свою библиотеку, которая перехватывала обращения только к интересующим меня функциям. Пример - перехват файловых операций Kernel32.dll Читал, что есть третий путь - создание специальной библиотеки, в секции экспорта которой сразу можно указать, что данная функция экспортируется данной библиотекой, а реализована в другой, но сам этот путь не исследовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2019, 09:49 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
x1ca4064 Читал, что есть третий путь - создание специальной библиотеки, в секции экспорта которой сразу можно указать, что данная функция экспортируется данной библиотекой, а реализована в другой, но сам этот путь не исследовал. Дмитрий Мух alexeyvg пропущено... Я тоже вашу логику не понимаю. Что с того, что "вам хватит" эти 2-3 вакансии, если на них претендует ещё 5000 человек? Вам же не 2-3 оффера дали, которые вам достаточно заапрувить, вы просто увидели 3 подходящих вакансии. Это не описывает рынок. подходящих специалистов на хорошие вакансии тоже не много а из 2-3 подходящих вакансий, один оффер да есть крайний раз было 2 оффера из 3-х вакансий, последним уже написал, что определился и не пошёл на второе собеседование Вот как на мороз сходите, потом раскажете свою саксес-стори. Преложения почти ничего не значат, только реальный кеш - шанс нарваться на обман и оказаться в поиске на пол годика в текущей ситуации очень велик. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 08:49 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
kealon(Ruslan), пардонс, не туда написал ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 09:16 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
x1ca4064 Читал, что есть третий путь - создание специальной библиотеки, в секции экспорта которой сразу можно указать, что данная функция экспортируется данной библиотекой, а реализована в другой, но сам этот путь не исследовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 09:22 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
kealon(Ruslan) слабо верится, как минимум один jmp ещё добавится ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 10:19 |
|
обертка-клон для dll
|
|||
---|---|---|---|
#18+
Basil A. Sidorov kealon(Ruslan) слабо верится, как минимум один jmp ещё добавится я исходя из релоков соображение выношу, фактически по формату можно релок установить только на адреса своей dll-ки в принципе конечно можно зная что нужная dll грузится по стабильному адресу (например системные dll) задать жёсткий адресс но это будет как бы нелогично да и подозрительно если GetProcAddr будет выдавать адресс из другой dll ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 11:40 |
|
|
start [/forum/topic.php?fid=57&msg=39896916&tid=2017509]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 268ms |
total: | 413ms |
0 / 0 |