Частичная ссылка в MS Visual Studio? - PullRequest
2 голосов
/ 19 января 2011

Я пытаюсь сократить время компоновки при создании большого приложения C ++ в MS Visual Studio 2005. В настоящее время время компоновки составляет от 7 до 100 секунд, обычно ближе к 7 (но, похоже, это зависит от удачи).

Мое приложение состоит из около 20 статических библиотек, одна из которых большая, редко изменяется и зависит от большой сторонней библиотеки, которая не используется ни одной из моих других библиотек.Я думаю, что это классический случай, когда частичная ссылка улучшит время сборки.Под «частичной связью» я подразумеваю все, что ld -r делает в Linux.

Возможно ли «частичное связывание» с MS Visual Studio?Я не нашел его в их документации, но, может быть, они называют это другим именем, или это скрытая особенность.

Имеет ли смысл мои предположения о частичной ссылке?Есть ли шанс, что это мне поможет?

Ответы [ 2 ]

1 голос
/ 19 января 2011

Связывает ли пошаговое через переключатель /INCREMENTAL, что вы ищете?

Еще одна вещь, которую вы можете сделать, - это пройти дополнительный уровень косвенности: обернуть статические библиотеки в DLL и показать все, что используется приложением через DLL. Эта DLL может быть построена довольно редко, и связывание с ней может быть гораздо дешевле.

0 голосов
/ 30 января 2011

Это может показаться тривиальным, но решением в моем случае было использование файла определения модуля (foo.def).Спецификация формата файла от Microsoft подразумевает, что он должен использоваться только для файлов DLL, , но он прекрасно работает и для статических библиотек , поэтому мне пришлось изменить свою библиотекуDLL .

Это уменьшило мое минимальное время соединения с 7 до 2 секунд (вероятно, помогло и среднему времени соединения).

...