Вот моя конфигурация:
- Компьютер A - Windows 7, MS Visual Studio 2005 с исправлением для совместимости с Win7 (8.0.50727.867)
- Компьютер B - Windows XP SP2, установлена MS Visual Studio 2005 (8.0.50727.42)
У моего проекта есть некоторые внешние зависимости (предварительно созданные библиотеки DLL - либо созданные на A, либо загруженные из Интернета), несколько библиотек DLL, созданных из источников, и один исполняемый файл. Я в основном развиваюсь на A, и там все хорошо. В какой-то момент я пытаюсь собрать свой проект на компьютере B, копируя готовые библиотеки DLL в папку вывода. Все работает нормально, но, пытаясь запустить приложение, я получаю
Не удалось правильно инициализировать приложение (0xc0150002) ....
Журнал событий содержит два из них:
Зависимая сборка Microsoft.VC80.CRT не может быть найдена, и была последняя ошибка. Указанная сборка не установлена в вашей системе.
плюс немного более забавный
Не удалось создать контекст активации для some.dll. Справочное сообщение об ошибке: операция успешно завершена.
На этом этапе я пробую свой Google-Fu, но напрасно - практически все обращения касаются запуска двоичных файлов на машинах без установленной Visual Studio. Однако в моем случае исполняемые файлы не запускаются на компьютере, на котором они созданы.
Следующим шагом было попробовать dependency walker, и это еще больше озадачило меня - мои библиотеки DLL, созданные из источников в том же самом ящике, не могут найти MSVCR80.DLL
и MSVCP80.DLL
, однако исполняемый файл, кажется, в порядке по отношению к этим двум библиотекам DLL, т.е. когда я открываю исполняемый файл с зависимостью walker показывает, что MSVC?80.DLL
s можно найти, но когда я открываю одну из своих DLL, он говорит, что они не могут. Вот где у меня совершенно нет идей, что делать, поэтому я спрашиваю вас, дорогой stackoverflow :)
Я признаю, что я немного расплывчатый во всем, что касается параллельности, так что общее чтение по этой теме также будет оценено.