Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вырезать часть кода из проекта и перенести в новый / 18 сообщений из 18, страница 1 из 1
28.10.2015, 11:53
    #39088783
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
Есть большой проект Dll с сотнями экспортируемых функций. Но мне для работы нужно только десяток.
Хочу вырезать их и перенести в новый проект dll. Существует ли какой-то инструмент, который позволяет отследить связи от экспортируемых функций, до всех которые они используют в работе. Или тут только полное изучение работы проекта и ручной перенос кода?
...
Рейтинг: 0 / 0
28.10.2015, 12:09
    #39088807
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
Вырезаешь экспортируемые, делаешь новый проект, компилируешь, получаешь список не
найденных символов, находишь и копируешь и их тоже, повторяешь пока не соберётся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.10.2015, 12:26
    #39088825
wst
wst
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
Инструменты существуют, но а) цены на них далеки от гуманных, б) анализ связей - лишь малая часть их функционала. Примеры - Understand от scitools или АИСТ от ЦБИ.
...
Рейтинг: 0 / 0
28.10.2015, 13:15
    #39088892
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
Ну можно карты сборки линкера вывести, там будут для каждого модуля импорты и экспорты.
Взять импорты всех модулей-клиентов и объединить в единый список, потом по этому списку извлекать код.
...
Рейтинг: 0 / 0
28.10.2015, 13:17
    #39088894
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
EoltЕсть большой проект Dll с сотнями экспортируемых функций. Но мне для работы нужно только десяток.
Хочу вырезать их и перенести в новый проект dll.


А в чём проблема использовать DLL целиком, в том виде, как он есть ?
"Хочу" -- это не техническая формулировка.
...
Рейтинг: 0 / 0
28.10.2015, 14:38
    #39088969
alexy_black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
имхо
правильное решение - переработать проект, разделив его на несколько несвязанных библиотек. проблема от того, что нарушен single responsibility - билиотека отвечает за несколько областей.

также.
если не понятно, какие функции использует код... это запшок .
...
Рейтинг: 0 / 0
28.10.2015, 15:58
    #39089062
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
EoltЕсть большой проект Dll с сотнями экспортируемых функций. Но мне для работы нужно только десяток.
Хочу вырезать их и перенести в новый проект dll. Существует ли какой-то инструмент, который позволяет отследить связи от экспортируемых функций, до всех которые они используют в работе. Или тут только полное изучение работы проекта и ручной перенос кода?
Нужет тест который дёрнет десяток твоих функций и подтвердит что они работают в полной мере
в новом проекте.

Все умные инструменты по рефакторингу и extract method/procedure не гарантируют того что имплементация
перенесена успешно. Мир сложен и чуден и бывают всякие поздние варианты связывания, плагины и прочие
ленивые механизмы.
...
Рейтинг: 0 / 0
28.10.2015, 19:34
    #39089250
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
MasterZivА в чём проблема использовать DLL целиком, в том виде, как он есть ?
"Хочу" -- это не техническая формулировка.

Большой размер библиотеки, совершенно излишне таскать с собой мегабайты мертвого кода
...
Рейтинг: 0 / 0
28.10.2015, 19:38
    #39089253
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
EoltБольшой размер библиотеки
Сколько гигабайт?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.10.2015, 19:44
    #39089255
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
Dimitry SibiryakovСколько гигабайт?


Более 5 мегабайт в виде скомпилированной DLL. Программа ее использующая весит около 70 кб в экзешнике.
99% функций в DLL мне не нужны. Внутренний перфикционист протестует против такого расхода ресурсов.
Программа лучше будет выглядеть 70 кб EXE + (50-100 кб DLL)
...
Рейтинг: 0 / 0
28.10.2015, 19:49
    #39089260
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
Eoltпротив такого расхода ресурсов
Каких ресурсов?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.10.2015, 19:51
    #39089264
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
Dimitry SibiryakovКаких ресурсов?


Дисковое пространство и оперативной памяти
...
Рейтинг: 0 / 0
28.10.2015, 19:53
    #39089265
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
EoltДисковое пространство и оперативной памяти
Оперативная память мёртвым кодом не занимается.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.10.2015, 19:58
    #39089267
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
Dimitry SibiryakovОперативная память мёртвым кодом не занимается.


Занимается. Когда EXE подгружает эту DLL через LoadLibrary, она целиком отображается на адресное пространство моего процесса.
99% кода мне не нужно.
...
Рейтинг: 0 / 0
28.10.2015, 20:03
    #39089272
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
Dimitry SibiryakovEoltДисковое пространство и оперативной памяти
Оперативная память мёртвым кодом не занимается.

Инициатива по рефакторингу мёртвого кода - вполне себе похвальна. Тут может
быть дело даже не столько в факте мёртвого кода сколько в усилиях по
его поддержке со стороны разработки. Так или иначе сорцы требуют
периодического просмотра глазами, участия в цикле компилляции e.t.c.
...
Рейтинг: 0 / 0
28.10.2015, 20:21
    #39089284
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
Eoltона целиком отображается на адресное пространство моего процесса
На виртуальное адресное пространство. В физическую память код попадёт только когда начнёт
выполняться.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
29.10.2015, 10:23
    #39089628
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
EoltMasterZivА в чём проблема использовать DLL целиком, в том виде, как он есть ?
"Хочу" -- это не техническая формулировка.

Большой размер библиотеки, совершенно излишне таскать с собой мегабайты мертвого кода

Глупость.
...
Рейтинг: 0 / 0
29.10.2015, 10:26
    #39089632
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вырезать часть кода из проекта и перенести в новый
EoltDimitry SibiryakovОперативная память мёртвым кодом не занимается.


Занимается. Когда EXE подгружает эту DLL через LoadLibrary, она целиком отображается на адресное пространство моего процесса.
99% кода мне не нужно.

Отображается -- не значит загружается и использует память.


Dimitry Sibiryakov тебе правильно говорит.
Ты занимаешься фигнёй.
Единственное оправдание таким действиям -- отсутствие занятости и/или обучение/накопление опыта.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вырезать часть кода из проекта и перенести в новый / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]