C++/CLI: исключение поймано в неправильном положении
Я новичок в управляемом C++, теперь имею дело с проектом C++/CLI, который включал вызов функций из собственной библиотеки DLL для отображения результатов через WinForm.
Ожидаемое исключение возникает при вызове функции из собственной библиотеки DLL из-за отсутствия оборудования для проекта.
Однако вместо того, чтобы быть пойманным прямо на вызове функции. Программа выходит из строки кода & AccessViolationException перехватывается там, где выполняется WinForm:
[STAThreadAttribute] int main(array<System::String ^> ^args) { // Enabling Windows XP visual effects before any controls are created Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); try{ // Create the main window and run it Application::Run(gcnew Form1()); } catch(System::AccessViolationException^ expMsg) { MessageBox::Show(expMsg->ToString()); } return 0; }
за исключением:
-Система.AccessViolationException' произошло в неизвестном модуле.
Что я уже пробовал:
При поиске в интернете создается впечатление, что проекты Winform по умолчанию пропускают инициализацию crt, что, очевидно, оказывает влияние на любые статические объекты. Может быть, именно поэтому и произошел этот сценарий?