Visual Studio .NET 2003 - игнорировать специальную библиотеку для libcmt против libcmtd - PullRequest
2 голосов
/ 03 декабря 2010

У меня есть шаблон проекта VS .NET 2003, который коллеги копируют и настраивают при разработке своего программного обеспечения.

Похоже, что шаблон был изменен некоторое время назад, чтобы в свойстве IgnoreSpecificLibrary был файл libcmt.lib как для выпуска, так и для отладки (т. Е. Как для выпуска, так и для отладки, сборка должна игнорировать libcmt.lib в компоновщике). *

Некоторые проекты, основанные на этом, были с тех пор построены, при этом сборка релиза тянет в libcmtd.lib (очевидно, просматривая файл .map проекта), который, похоже, вызвал некоторые проблемы во время выполнения (то есть диалоговое окно всплыло как хотя точка останова была установлена).

Может ли установка IgnoreSpecificLibrary для исключения libcmt.lib автоматически сделать ссылку проекта на libcmtd.lib?

Что странно, так это то, что создание шаблона (с неправильной настройкой) ссылается на libcmt.lib, тогда как некоторые из настроенных проектов (хотя и не все) ссылаются на libcmtd.lib.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 01 января 2011

Вот что произошло:

После компиляции компоновщик берет ваши объектные файлы и создает среди прочих таблицу символов, у которой есть symol-запрос, который не был заполнен.Затем компоновщик просматривает ваш список библиотек, пытаясь найти эти невыполненные символы.Так как вы игнорируете libcmt.lib, ваша сторонняя библиотека оставила или добавила некоторые неразрешенные символы и содержит запрос компоновщика для разрешения их из licmtd.lib (и, возможно, других библиотек), поскольку она была скомпилирована с параметром отладки.1003 *

Если бы вы не проигнорировали libcmt.lib, эти символы, скорее всего, были бы разрешены libcmt.lib, и не было необходимости извлекать что-либо из libcmtd.lib (даже если бы он просматривался для разрешения других символов)которые еще не выполнены)

Вы также можете попробовать igmore libcmtd.lib.Если вы теперь получили unresolvd externals, то было бы неплохо проигнорировать libcmt.dll.

2 голосов
/ 03 декабря 2010

Многие проекты игнорируют libcmt.lib, потому что он конфликтует с динамической версией msvcrt.lib.Игнорирование libcmt в компоновщике приводит к компиляции проекта с помощью msvcrt.lib

...