Найти все импортируемые функии и классы проекта
От: t_t_m  
Дата: 31.08.10 09:56
Оценка:
Здравствуйте.

Мы имеем большой проект (на С++), часть кода которого надо опубликовать.
Эта часть, назовём её "конечный проект", использует много-много библиотек, публиковать которые не надо. А надо только предоставить к ним интерфейсы для компиляции.
Поэтому мы поставили перед собой такие задачи
(задачи должны выполняться регулярно, например 1 раз в квартал)
1. Определить все библиотеки, которые используются нашим конечным проектом в рамках большого проекта. Для всех используемых библиотек надо определить классы и функции, которы мы импортируем.
На основе этой информации мы могли бы
— уменьшить объём внешних библиотек, например , отказавшись от какого-то кода.
— получить первичную информацию о том, какие классы мы импортируем из библиотек для конечного проекта.

2. Выделить (ИЛИ СГЕНЕРИРОВАть) множество классов и их хидеров библиотечных интерфейсов, которые позволили бы скомпилировать конечный проект, оставив непубликуемые модули за кадром.

Ввиду регулярности выполнения поставленной задачи напрашивается её любая автоматизация.

Сталкивался ли кто-либо с подобными задачами? Может ли помочь идеологическим советом или ссылкой на продукт(ы)?
Re: Найти все импортируемые функии и классы проекта
От: Ник  
Дата: 12.05.11 15:36
Оценка:
__>Сталкивался ли кто-либо с подобными задачами? Может ли помочь идеологическим советом или ссылкой на продукт(ы)?
Выделить одного-двух человек, которые будут играть во "внешнюю компанию", пусть они собирают конечный проект и сообщают, какие промежуточные компоненты оказались им доступны. Другие люди пусть заменяют исходники на объявления функций. Как это сделать технически, спрашивайте в форуме про С++.
Re: Найти все импортируемые функии и классы проекта
От: Pavel Dvorkin Россия  
Дата: 12.05.11 15:58
Оценка:
Здравствуйте, t_t_m, Вы писали:

__>Здравствуйте.


__>Мы имеем большой проект (на С++), часть кода которого надо опубликовать.

__>Эта часть, назовём её "конечный проект", использует много-много библиотек, публиковать которые не надо. А надо только предоставить к ним интерфейсы для компиляции.
__>Поэтому мы поставили перед собой такие задачи
__>(задачи должны выполняться регулярно, например 1 раз в квартал)
__>1. Определить все библиотеки, которые используются нашим конечным проектом в рамках большого проекта. Для всех используемых библиотек надо определить классы и функции, которы мы импортируем.
__>На основе этой информации мы могли бы
__> — уменьшить объём внешних библиотек, например , отказавшись от какого-то кода.
__> — получить первичную информацию о том, какие классы мы импортируем из библиотек для конечного проекта.

__>2. Выделить (ИЛИ СГЕНЕРИРОВАть) множество классов и их хидеров библиотечных интерфейсов, которые позволили бы скомпилировать конечный проект, оставив непубликуемые модули за кадром.


__>Ввиду регулярности выполнения поставленной задачи напрашивается её любая автоматизация.


__>Сталкивался ли кто-либо с подобными задачами? Может ли помочь идеологическим советом или ссылкой на продукт(ы)?


Предполагаю, что речь идет о VC++.

В VS есть утилита dumpbin, которая выдает листинг всего импорта или экспорта для модуля : имена библиотек и имена функций (методов).

Пишем небольшую утилиту, которая анализирует этот листинг. Для имен функций можно попробовать UnDecorateSymbolName, она может вернуть полную сигнатуру метода. Результаты отправляем в некий новый файл или файлы.

Далее итерационно по всем экспортируемым библиотекам или по тем, которые нужно.

Если есть кому поручить написание такой утилиты — думаю, работы от силы на месяц-два.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.