Подмена DLL-библиотеки

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Defder
Сообщения: 64
Зарегистрирован: 24 май 2005, 12:25

Задача такая: нужно расширить функциональность библиотеки.
Исходников нет. Заголовки её функций есть.
Хочу написать свою библиотеку, используя заголовочные файлы существующей. Проблема в том, чтобы в своей библиотеке вызывать одноимённые функции именно внешней библиотеки.
ssDev
Сообщения: 50
Зарегистрирован: 20 янв 2005, 14:41

Есть простой вариант.
В своей DLL загружай старую dll динамически (LoadLibrary/FreeLibrary) тогда будеш получать ее функции с помощью GetProcAddress и никаких проблем с именованием
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

2B OR NOT(2B) = FF
Defder
Сообщения: 64
Зарегистрирован: 24 май 2005, 12:25

Функций в библиотеке больше сотни. Если бы как-то автоматизировать...
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Не совсем понятно, с чем связано именно такое решение?
Обычно такие модули-посредники подкладывают в чужое приложение, чтобы перехватывать вызовы функций из его "родной" библиотеки. Но для своего проекта зачем создавать промежуточный модуль? Весь код расширения функционала ты можешь использовать напрямую в проекте и вызывать из него функции той библиотеки, которая у тебя есть.
Defder
Сообщения: 64
Зарегистрирован: 24 май 2005, 12:25

Хочу написать что-то типа патча к существующей библиотеке.
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

Напиши dll - враппер, который экспортирует те же самые функции, что и старая dll и переадресовывает вызовы в старую dll. При необходимости модифицируй поведение.
2B OR NOT(2B) = FF
Defder
Сообщения: 64
Зарегистрирован: 24 май 2005, 12:25

Я и хочу так сделать. А как вызвать из новой библиотеки функцию старой библиотеки? Имена ведь будут совпадать.
ssDev
Сообщения: 50
Зарегистрирован: 20 янв 2005, 14:41

Тебе что в новой библиотеке нужны все функции старой?
Наверняка не более десятка. А парится с тулзами которые насилуют dll это больше проблем чем пользы.
ssDev
Сообщения: 50
Зарегистрирован: 20 янв 2005, 14:41

Мда... Чето в этой теме не так! (мой глюк)
Самый простой путь написаь парсер для хидера потому что из самой dll ты можеш выбрать только имена функций, без параметров и то не всегда.
Поэтому я что-то сомневаюсь чтобы были утилиты каторые делают это автоматически, а хидеры бывают разные
Ответить