2010-09-10 4 views
0

У нас есть проект, построенный с vs2010, который использует DLL с управляемым кодом. Я построил .dll в vs2010, целевую платформу .NET 4.0 (также попробовал профиль клиента), который является единственным вариантом 2010, который вы можете использовать. Когда я иду запускать его, он не может инициализировать, и я предполагаю, что это некоторая несовместимость ... но я понятия не имею, что это будет. У кого-нибудь есть идеи?Приложение не удалось правильно инициализировать

Кроме того, я скачал исправление, которое позволяет сделать Инкрементальный Управляемый Строит (изначально это не было характерной чертой в 2010 году)

Спасибо!

+0

И теперь вы надеетесь, что кто-то произведет ответ на основе этой информации? Пожалуйста, опишите все проекты (целевую платформу и т. Д.), Подробную информацию об ошибке, то, что находится в файлах конфигурации и т. Д. –

+0

Также, что инкрементная сборка имеет отношение ко всему? И вы пробовали без него? –

+0

Извините, я не понимал, насколько расплывчатым был вопрос. Я предполагал, что это проблема с управляемым .dll (и, следовательно, инкрементной сборкой), потому что он отлично работает с vs2008. Ничто другое не изменилось, насколько я знаю, переместив его на 2010 год. Мы используем Ogre 1.7, ориентируемся на окна и нет никакого выхода для файлов журналов или чего-то еще ... он никогда не попадает в основную. Точная ошибка: «Приложению не удалось правильно инициализировать (0xc000007b). Нажмите« ОК », чтобы закрыть приложение». –

ответ

2

Исключение 0xc000007b (STATUS_INVALID_IMAGE_FORMAT) почти всегда генерируется в 64-разрядной версии Windows. Потому что ваша программа работает в 64-битном режиме и пытается загрузить DLL, которая содержит неуправляемый 32-битный код. Или наоборот.

Удостоверьтесь, что управляемая сборка была построена с установленной платформой Target Any Any. Это больше не по умолчанию в VS2010. Project + Properties, вкладка Build, настройка целевой платформы. Обязательно измените его как для конфигурации Debug, так и для Release.

Если вы не знаете, что такое DLL, он может наблюдать загрузку библиотеки DLL с помощью утилиты ProcMon SysInternals.

+0

Настройка в Linker-Advanced под названием «Target Machine» установлена ​​на Machinex86, что является правильным. Это тот настрой, о котором вы говорите ... Я не мог найти тот, о котором вы говорили. Кроме того, я сделал Dependency Walker, и он вернулся с тремя пропущенными DLL: MSVCR90D.DLL, IESHIMS.DLL и WER.DLL. И он сказал, что есть «Импорт/Экспорт Несоответствие или Ошибка загрузки» для: OGREMAIN_D.DLL & OIS_D.DLL. Возможно, мне нужно создать материал Ogre локально ... –

+0

Итак, он работает на 64-разрядной версии Windows? Нет, я говорил о настройке проекта C#. Что не имеет значения при настройке целевой машины. Dependency Walker больше не является хорошим инструментом, у него проблемы с кеш-сайтом, попробуйте ProcMon найти создателя проблем. Кроме того, не развертывайте отладочную сборку, вы не можете распространять msvcr90d.dll –

+0

Не уверен, что на 64-битном компьютере нет одного доступного атм. Проект C# был правильно установлен. Я выясню, как использовать ProcMon сейчас, спасибо за помощь кстати. –

Смежные вопросы