Объединение нескольких DLL в одну
а как ты думаешь будут разрешаться конфликты имен? Ну, там в одной библиотеке DoSomething, и в другой такая же функция.
В большинстве случаев можно, но вот инструментов для этого я не знаю. Если хочешь такой инструмент написать - смотри в сторону imagehlp.dll.
И учти, что если ты, например, хочешь объединить 7zip.dll и SDL.dll, то для использования получившейся dll'кой придется подправить их стандартные заголовочные файлы (в лучшем случае #define'ом (c/c++) или const'ом (delphi в худшем - поиском и заменой чтобы функции экспортировались из dll'ки с правильным именем.
а вот если пишешь под .NET, то есть такая утилитка ILMerge (скачать можно хоть с сайта MS специально для этого сделанная. Но - только дотнет
а как ты думаешь будут разрешаться конфликты имен? Ну, там в одной библиотеке DoSomething, и в другой такая же функция.Да пусть хоть систему сносит в таком случае. Библиотеки я разрабатываю и слежу за этим.
на форуме MSDN пишут что нельзя в принципе, и средств таких нетуа вот если пишешь под .NET, то есть такая утилитка ILMerge (скачать можно хоть с сайта MS специально для этого сделанная. Но - только дотнетУгу, ILMerge смотрел, он не смог, потому что не .NET.
смотри в сторону imagehlp.dll.thx
На DLL_PROCESS_ATTACH повесить их распаковку во временную папку, загрузку и определение адресов экспортируемых функций. Соответственно, придётся создать заглушки для всех экспортируемых функций, которые будут передавать управление куда нужно. Только если экспорт не по имени, а по индексу у обоих библиотек, то ничего не получится (правда таких библиотек почти не встречал).
Желательно, чтобы при этом еще и была возможность связываться с этой библиотекой через .lib-файл.
GROUP (AS_NEEDED ( -llib1 -llib2 -llib3 ) )
Желательно, чтобы при этом еще и была возможность связываться с этой библиотекой через .lib-файл.Эта возможность будет, я же написал про заглушки для экспорта...
Правда, при экспорте не только функций, но и данных, начнутся проблемы.
Оставить комментарий
erotic
Можно ли несколько разных dll объединить в одну большую библиотеку?