C # отсутствует MSVCR100.dll - PullRequest
       32

C # отсутствует MSVCR100.dll

20 голосов
/ 05 августа 2011

Я разрабатываю приложение, которое выполняет другое приложение, и я получил эту ошибку:

программа не может запуститься, потому что MSVCR100.dll отсутствует в вашем компьютер

с помощью моего приложения на C # я могу исправить эту проблему, копируя этот .dll в папку windows / system32? Или существует другой способ сделать это?

Ответы [ 4 ]

30 голосов
/ 06 августа 2011

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

Распространяемый пакет Microsoft Visual C ++ 2010 (x86) (вероятно, то, что вам нужно для 32-разрядной и 64-разрядной ОС)

Распространяемый пакет Microsoft Visual C ++ 2010 (x64) (Только если само приложение является 64-разрядным)

Если вы действительно хотите установить DLL-библиотеки MSVCRT100 через модуль слияния в своем собственном MSI - вы можете связать MSI с MSM, которые находятся в версии x86 для ваших «c: \ program files \ common files \ merge modules» каталог "(при условии, что у вас установлена ​​Visual Studio 2010).

C:\Program Files (x86)\Common Files\Merge Modules>dir *CRT*.msm
 Volume in drive C has no label.
 Volume Serial Number is 60A4-1718

 Directory of C:\Program Files (x86)\Common Files\Merge Modules

04/22/2011  01:18 PM           584,192 Microsoft_VC100_CRT_x64.msm
04/22/2011  01:41 PM           571,904 Microsoft_VC100_CRT_x86.msm  <-- This is likely the MSM you want if your app is 32-bit.
04/22/2011  01:14 PM           847,360 Microsoft_VC100_DebugCRT_x64.msm
04/22/2011  01:39 PM           801,792 Microsoft_VC100_DebugCRT_x86.msm

Две другие альтернативы: Вместо того, чтобы копировать MSVCRT100.dll в системный каталог, скопируйте его в каталог приложения EXE, которое вы пытаетесь запустить, в зависимости от этой DLL. Это не рекомендуется, но не рискует сломать другие приложения.

Еще одна альтернатива. Если у вас есть исходный код EXE-файла, который вы пытаетесь запустить, вы можете полностью обойти весь этот шум «install msvcrt100.dll», просто статически связавшись с ним. В Visual Studio это опция в диалоге свойств проекта в C / C ++ (на вкладке «Генерация кода»). Измените «библиотека времени выполнения» с «Многопоточный Dll» на просто «Многопоточный». Это добавляет ключ компилятора / MT.

5 голосов
/ 05 августа 2011

Любая программа, которую вы пытаетесь запустить, должна быть правильно установлена ​​в первую очередь.Msvcr100.dll является одной из библиотек DLL, которые необходимо развернуть для программ, написанных на C или C ++ с VS2010.Это просто для проекта установки и развертывания или для сборки программы с параметром / MT.Обратитесь к владельцу программы за поддержкой.

2 голосов
/ 05 августа 2011

чего не хватает, так это среды выполнения Visual C ++.

запускаете ли вы приложение C ++ из своего кода C #?если это так, убедитесь, что на клиентских машинах доступно правильное время выполнения.

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

Вы можете исправить это, скопировав его и зарегистрировав (с помощью командной строки: regsvr32 "DLLNAME"), или вы можете отправить его вместе с исполняемым файлом, и он должен работать

ВНИМАНИЕ: Пожалуйста, ознакомьтесь со следующей статьей, прежде чем включать файл в свое программное обеспечение ... http://msdn.microsoft.com/en-us/library/ms235299.aspx

Я не несу ответственности за ваши действия

...