Какая версия C Run-Time Library (CRT) загружается? - PullRequest
1 голос
/ 21 января 2011

У меня есть ошибка, которая, как я подозреваю, может быть вызвана тем, что разные версии CRT загружаются на два компьютера под управлением Windows 7. Как определить, какая версия MSVCR90.dll в папке winsxs загружается?

Моя программа - это DLL, загружаемая другим EXE-файлом.Он скомпилирован с использованием Visual Studio 2008 SP1.

Ответы [ 2 ]

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

Как ответил Аль Кепп, вы можете использовать Dependency Walker, "Depends.exe". Для динамически загружаемых библиотек DLL лучше всего профилировать приложение при загрузке вашей библиотеки.

В Dependency Walker откройте EXE, не вашу DLL. Затем нажмите «Профиль -> Начать профилирование». Если приложению требуются аргументы, вы можете указать их в открывшемся окне, в противном случае просто нажмите «ОК», чтобы запустить программу. Когда программа открыта, используйте ее обычным способом, чтобы она загружала вашу DLL. Теперь, когда ваша DLL загружена, вы сможете просматривать дерево в Dependency Walker, чтобы увидеть, какие версии CRT используются.

Если вы не видите версию, убедитесь, что в дереве показаны полные пути, нажав кнопку «C: \».

Вы также можете увидеть, какую версию CRT запрашивает приложение или библиотека, проверив манифест, который обычно, но не всегда, включен в DLL или EXE. в Visual Studio нажмите «Файл-> Открыть-> Файл ...» и выберите EXE или DLL. Откройте ресурс RT_MANIFEST, и вы должны увидеть некоторый XML, в котором перечислены CRT как зависимость и версия.

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

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

Вы можете использовать приложение Dependency Walker, чтобы увидеть, какие файлы DLL загруженыв ваш процесс при запуске.Вы можете скачать его с сайта Microsoft бесплатно.

...