2013-05-28 4 views
1

Имея проект C++/cli и его приложение . В режиме отладки у нас не было никаких проблем, но после его запуска в режим выпуска эта ошибка запустилась. Я искал и нашел ответы на форум, но не смог помочь решить эту проблему.Инициализатор типа для «Модуля» выбрал исключение

Пожалуйста, помогите мне ....

Ошибка:

An unhandled exception of type 'System.TypeInitializationException' occurred in Unknown Module 

Дополнительная информация: Тип инициализатор для 'модуля' бросил исключение.

+0

Я думаю, что лучше будет опубликовать некоторый код вокруг инициализатора модуля. –

ответ

0

Имеет ли машина, на которой работает приложение, все необходимые DLL?

Я уверен, что вам не хватает некоторых interops в локальном каталоге

5

В проекте C++/CLI, то <Module> класс специальный (обратите внимание на угловые скобки). Это скрытый управляемый класс, который компилятор генерирует, чтобы предоставить все ваши функции, которые не являются методами класса, безопасным домом. Требуется, потому что CLR не поддерживает бесплатные функции, такие как C++.

Инициализатор типа для <Module> является дополнительным, он работает очень в начале программы. Именно здесь запускается CRT, и любые статические объекты в вашем коде получают инициализацию.

Таким образом, базовая диагностика заключается в том, что инициализация статического объекта в вашем коде не удалась. То, что это происходит при запуске и происходит только в релизе сборки очень, очень болезненно. Отладчик не позволяет вам проходить этот код, и, конечно, у вас нет хорошей информации об отладке, чтобы начать с сборки Release. С некоторой удачей основная причина - исключение C++ или SEH, которое не обрабатывается. Отладка + Исключения, поставьте галочки с надписями. Отладчик остановится при вызове исключения.

+1

'' больше, чем просто скрыто - у него очень специальное лечение. –

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