Объединение нескольких DLL в одну

erotic

Можно ли несколько разных dll объединить в одну большую библиотеку?

Helga87

а как ты думаешь будут разрешаться конфликты имен? Ну, там в одной библиотеке DoSomething, и в другой такая же функция.

SPARTAK3959

В большинстве случаев можно, но вот инструментов для этого я не знаю. Если хочешь такой инструмент написать - смотри в сторону imagehlp.dll.

SPARTAK3959

И учти, что если ты, например, хочешь объединить 7zip.dll и SDL.dll, то для использования получившейся dll'кой придется подправить их стандартные заголовочные файлы (в лучшем случае #define'ом (c/c++) или const'ом (delphi в худшем - поиском и заменой чтобы функции экспортировались из dll'ки с правильным именем.

Marusetta

на форуме MSDN пишут что нельзя в принципе, и средств таких нету
а вот если пишешь под .NET, то есть такая утилитка ILMerge (скачать можно хоть с сайта MS специально для этого сделанная. Но - только дотнет

erotic

а как ты думаешь будут разрешаться конфликты имен? Ну, там в одной библиотеке DoSomething, и в другой такая же функция.
Да пусть хоть систему сносит в таком случае. Библиотеки я разрабатываю и слежу за этим.

erotic

на форуме MSDN пишут что нельзя в принципе, и средств таких нетуа вот если пишешь под .NET, то есть такая утилитка ILMerge (скачать можно хоть с сайта MS специально для этого сделанная. Но - только дотнет
Угу, ILMerge смотрел, он не смог, потому что не .NET.

erotic

смотри в сторону imagehlp.dll.
thx

Andbar

Как вариант: создать третью, запихнув две первые к ней в ресурсы.
На DLL_PROCESS_ATTACH повесить их распаковку во временную папку, загрузку и определение адресов экспортируемых функций. Соответственно, придётся создать заглушки для всех экспортируемых функций, которые будут передавать управление куда нужно. Только если экспорт не по имени, а по индексу у обоих библиотек, то ничего не получится (правда таких библиотек почти не встречал).

erotic

Ух ты жесть какая :)
Желательно, чтобы при этом еще и была возможность связываться с этой библиотекой через .lib-файл.

erotic

Есть в винде что-то вроде linker script в линукс? Там я просто создаю библиотеку libunited.so, которая содержит вот что:
 GROUP (AS_NEEDED ( -llib1 -llib2 -llib3 ) ) 

Andbar

Желательно, чтобы при этом еще и была возможность связываться с этой библиотекой через .lib-файл.
Эта возможность будет, я же написал про заглушки для экспорта...
Правда, при экспорте не только функций, но и данных, начнутся проблемы.
Оставить комментарий
Имя или ник:
Комментарий: