Определение источника зависимостей в генераторе манифестов MSVC - PullRequest
2 голосов
/ 08 июня 2011

Я создаю приложение с использованием Microsoft Visual C ++ 2005. После серьезного обновления библиотек я получаю следующую запись в моем файле манифеста:

<dependency>
  <dependentAssembly>
    <assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50727.4053" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
  </dependentAssembly>
</dependency>

Однако, когда я смотрю, использую Dependency Walkerв полученном исполняемом файле я вообще не вижу MSVC80D.DLL в списке, что меня немного удивляет.

Я также пытался установить компоновщик в режим "verbose", чтобы проверить,это скажет мне, откуда исходит зависимость, указанная в манифесте.Увы, информация там не проливает свет на проблему.

Я также просмотрел все библиотеки, на которые я ссылаюсь, чтобы увидеть, использует ли какая-либо из них отладочную CRT.Насколько я могу судить, никто из них этого не делает.

Как определить, какая библиотека вызывает эту проблему?Когда я распространяю исполняемый файл как есть, я получаю параллельную ошибку, предположительно из-за этой записи в автоматически сгенерированном манифесте.

Большое спасибо за любую помощь, которую вы можете предложить ... ПослеПосле нескольких дней попыток выяснить, что происходит, я начинаю очень расстраиваться из-за этой проблемы.

1 Ответ

0 голосов
/ 09 июня 2011

Я думаю, что нашел решение своей проблемы. Я решил создать небольшое тестовое приложение, а затем добавлять библиотеки, которые я использую по одной за раз. Используя этот метод, я выделил одну библиотеку, которая, по-видимому, вызывала проблему. Я уверен, что библиотека не показывала зависимости отладки с помощью dumpbin, но, с другой стороны, мне удалось устранить нежелательную строку манифеста, перестроив эту библиотеку.

...