Member 14150165 Ответов: 0

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, что, очевидно, оказывает влияние на любые статические объекты. Может быть, именно поэтому и произошел этот сценарий?

0 Ответов