Ошибка LoadLibrary с ERROR_SXS_CANT_GEN_ACTCTX (DLL зависит от VS2005 CRT 8.0.50727.4053)

У меня есть сторонняя DLL, созданная с помощью Visual Studio 2005, которую я использую в проекте, построенном с Visual Studio 2008. Эта DLL зависит от CRT VS2005, версия 8.0.50727.4053.

В Windows 7 это работает, но в Vista и XP LoadLibrary завершается с ошибкой рядом друг с другом. Это от просмотра событий:

Сбой генерации контекста активации для "C:\MyLibrary.dll". Не удалось найти зависимую сборку Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053". Пожалуйста, используйте sxstrace.exe для подробной диагностики.

Я пробовал копировать msvcm80.dll,msvcp80.dll,msvcr80.dll от x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4053_none_d08d7da0442a985d на моем компьютере в тот же каталог, что и DLL, но LoadLibrary по-прежнему не удается, и та же ошибка в средстве просмотра событий.

Это вывод файла sxstrace.exe:

=================
Begin Activation Context Generation.
Input Parameter:
    Flags = 0
    ProcessorArchitecture = x86
    CultureFallBacks = en-US;en
    ManifestPath = C:\MyDir\MyLibrary.dll
    AssemblyDirectory = C:\MyDir\
    Application Config File = 
-----------------
INFO: Parsing Manifest File C:\MyDir\MyLibrary.dll.
    INFO: Manifest Definition Identity is (null).
    INFO: Reference: Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053"
INFO: Resolving reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053".
    INFO: Resolving reference for ProcessorArchitecture x86.
        INFO: Resolving reference for culture Neutral.
            INFO: Applying Binding Policy.
                INFO: Find publisher policy at C:\Windows\WinSxS\manifests\x86_policy.8.0.microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4016_none_5169e8e10f4ca52d.manifest
                INFO: No binding policy redirect found.
            INFO: Begin assembly probing.
                INFO: Did not find the assembly in WinSxS.
                INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC80.CRT\8.0.50727.4053__1fc8b3b9a1e18e3b\Microsoft.VC80.CRT.DLL.
                INFO: Attempt to probe manifest at C:\MyDir\Microsoft.VC80.CRT.DLL.
                INFO: Attempt to probe manifest at C:\MyDir\Microsoft.VC80.CRT.MANIFEST.
                INFO: Attempt to probe manifest at C:\MyDir\Microsoft.VC80.CRT\Microsoft.VC80.CRT.DLL.
                INFO: Attempt to probe manifest at C:\MyDir\Microsoft.VC80.CRT\Microsoft.VC80.CRT.MANIFEST.
                INFO: Did not find manifest for culture Neutral.
            INFO: End assembly probing.
    ERROR: Cannot resolve reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.4053".
ERROR: Activation Context generation failed.
End Activation Context Generation.

2 ответа

Решение

Вам необходимо установить распространяемый пакет для VS2005. К сожалению, их несколько для разных уровней пакетов обновлений, исправлений безопасности и так далее.

В общем, чтобы найти нужную вам Google номер версии DLL, которая не загружается (в данном случае 8.0.50727.4053).

Вы, вероятно, найдете ссылку на нужный пакет.

Вам необходимо установить распространяемый Microsoft Visual C++ 2005.

Другие вопросы по тегам