Ошибка "msvcr100.dll" (только в Windows 7 и Vista) даже после статического связывания (/ MT) - PullRequest
0 голосов
/ 29 августа 2011

У меня есть простая DLL, которая вводится в целевой процесс с использованием обходов MS.Процесс, выполняющий инъекцию, является приложением C # .net.

Как DLL, так и библиотека обходов были статически связаны (опция / MT).

Однако, когда я пытаюсь внедрить dll в целевую программу на клиентском компьютере, я получаю ошибку "msvcr100.dll" отсутствует " ошибка. Теперь я открываю dll с / зависит инет никакой зависимости от "msvcr100.dll".

Еще более странно, что эта проблема возникает, только если клиент Vista Vista или Windows 7 x64. DLL успешно введен в системах Windows XP и Windows 7 x32.

Любые идеи о том, какая ошибка в visual studio указывает на зависимость от неиспользуемой библиотеки?

При редактировании: похоже, что у кого-то еще была такая же проблема ... никогда не решалась. Скомпилированные файлы .dll, требующие загрузки msvcr100.dll

Для записи, устанавливаемой Visual Studio 2010 C ++, распространяемой на клиентском компьютере, «решает» проблему, однако я надеялся избежать этой зависимости путем статического связывания.

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Так что я так и не смог точно выяснить, в чем проблема, но на догадках я попытался запустить приложение (точно такая же ошибка build w / mscvr100.dll) на другом компьютере с Windows 7, и оно работало нормально.

Я переустановил Windows 7 на «проблемной» машине, и та же сборка работает без ошибок. В моем поиске в Google я обнаружил, что после удаления Visual Studio у другого человека возникла эта проблема. Я точно знаю, что Visual Studio была когда-то установлена ​​на «проблемной» машине с Windows 7 и в настоящее время была удалена.

Если это случится с кем-то другим, я бы порекомендовал попробовать запустить бинарный файл на машине, на которой никогда не было установлено Visual Studio. Если это работает без проблем, то, скорее всего, есть проблема, связанная с удалением VS.

1 голос
/ 29 августа 2011

Возможно, вы сможете выяснить, что происходит с моим подключением (предварительным внедрением) отладчика cdb к процессу на машине, где загружено msvcr100.dll (с установленной DLL). Используйте

sxe ld:msvcr100

команда для сбоя при загрузке этой DLL (я не на 100% уверен, что это правильный синтаксис). После загрузки вы можете понять причину, посмотрев на стек вызовов. Если нет, попробуйте установить точку останова для всего в этом модуле:

bm msvcr100!*

и посмотри, кто звонит. Это должно дать вам действительно хорошее представление о том, почему он загружается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...