Visual Studio 2010 — неуправляемая компиляция VS2010 C ++ как управляемая — сбой CLR.dll при выходе

Я работаю над неуправляемым проектом C ++ в VS2010. Первоначально проект был создан как консольное приложение Windows (/ SUBSYSTEM: CONSOLE, с определением препроцессора _CONSOLE, с использованием _tmain () в качестве точки входа). Я изменил его на оконное приложение, чтобы иметь больше функциональных возможностей для интерфейса (/ SUBSYSTEM: WINDOWS, с определением препроцессора _WINDOWS, с использованием _tWinMain () в качестве точки входа).

Отлично запускается и работает, но когда я выхожу из приложения, как только окно исчезает, я получаю диалоговое окно, в котором говорится, что исполняемый файл перестал работать. Нажмите Отладка, выбрал VS2010, который уже открыт с проектом, а затем получил другое диалоговое окно с сообщением, что исполняемый файл перестал работать. Когда я нажимаю «Отладка», я получаю другое диалоговое окно, в котором говорится: «Отладчик подключен, но не настроен для отладки этого необработанного исключения. Из кода .NET Framework v4.0 создается необработанное исключение».

НОТА: Этот сбой происходит только тогда, когда приложение запускается как выпуск, дважды щелкнув значок приложения. Когда я бегу в IDE VS2010, он выходит изящно.

Мне это показалось странным, поскольку мой проект определяется как Win32 с использованием стандартных библиотек Windows. Поэтому я посмотрел журнал системных ошибок и обнаружил, что ошибка для моего исполняемого файла выглядит следующим образом:

Неправильное имя приложения:, версия: 1.0.0.1, отметка времени 0x5638a404
Неисправное имя модуля: clr.dll, версия: 4.0.30319.34014, отметка времени: 0x52e0b784
Код исключения: 0xc0000005

Посмотрел на это и обнаружил, что CLR.dll .NET управляется. Я не уверен, почему это используется моим приложением сейчас. Просматривал свойства моего проекта и не видел ссылки на его необходимость, поэтому я предполагаю, что когда я изменил на SUBSYSTEM: WINDOWS, или на препроцессор _WINDOWS, или оба, он должен был быть включен как требование.

Затем я посмотрел текст «» и нашел следующую ссылку (https://support.microsoft.com/en-us/kb/2640103) который имеет название ИСПРАВЛЕНИЕ: Ошибка имени модуля: сообщение об ошибке clr.dll при запуске приложения на основе Microsoft .NET Framework 4. Похоже, это указывает на то, что мое приложение теперь создается как приложение .NET, а не намерение.

Может кто-нибудь сказать мне, почему я обращаюсь к CLR.dll при запуске моего исполняемого файла? И почему мое приложение создается как .NET 4, когда раньше этого не делалось? На данный момент я не знаю, как выяснить, почему возникает ошибка доступа, но я предполагаю, что это потому, что приложение не написано для обработки .NET 4.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]