Использование исключений без CRT

Я хочу использовать исключения в моей программе. Но моя программа имеет собственную точку входа и не использует CRT (C-runtime).

Моя программа проста, как это:

    MessageBox (NULL, L "будет сгенерировано исключение", L "ок", MB_ICONEXCLAMATION | MB_OK);
    пытаться {
      бросить 123;
    } ловить (...) {
      MessageBox(NULL, L"выброшено исключение", L "ок", MB_ICONEXCLAMATION | MB_OK);
    }

Все отлично работает, когда я использую стандартную точку входа и CRT. Но когда я меняю EP программы, она вылетает с ошибкой "Нарушение прав доступа" при вызове функции _CxxThrowException.

Я сделал подробный скриншот аварии: http://vs712.server4u.cz/exception.png

Что вызывает эту ошибку? Есть ли обходной путь, как использовать исключения без использования CRT?

Благодарю.

1 ответ

Если ваша программа скомпилирована Visual C++. Вы ДОЛЖНЫ использовать ЭЛТ. Вы не знаете, что делает компилятор. Компилятор может вызывать любую функцию CRT в любом месте вашего кода.

Если вы действительно не хотите использовать CRT. Затем используйте другой компилятор или другой язык, например Assembly.

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