Статическое связывание библиотек в Visual Studio

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

2 ответа

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

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

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

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

Другие вопросы по тегам