Статическое связывание библиотек в Visual Studio - PullRequest
0 голосов
/ 25 января 2011

Когда вы выбираете /MTd статическое связывание в Visual Studio, будет ли оно пытаться статически связываться с каждой библиотекой или есть некоторые исключения для системных библиотек?

Ответы [ 2 ]

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

Флаги / MT и / MD определяют только то, как связана библиотека времени выполнения C / C ++. Она не влияет на другие библиотеки, определенные системой или пользователем.

Системные библиотеки, такие как kernel32.lib, user32.lib и т. Д.), Являются библиотеками импорта - статическая библиотека для связи отсутствует.

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

Описание: / MTd: определяет _DEBUG и _MT. Эта опция также заставляет компилятор поместить имя библиотеки LIBCMTD.lib в файл .obj, чтобы компоновщик использовал LIBCMTD.lib для разрешения внешних символов.

Из того, что я вижу, нет статического связывания. Если вы хотите сделать статическое связывание, вам нужно использовать ILMerge . И даже тогда вы не должны пытаться объединить необходимые ссылки .Net Framework, поскольку они часто ссылаются на другие, которые вы можете пропустить. Это может быть даже невозможно, так как они используют GAC для ссылок.

...