У меня есть C / C ++ DLL. У меня есть и приложение ASP.NET, вызывающее эту DLL с помощью P / Invoke. Иногда один из этих вызовов выдает SEHException
.
Прямо сейчас для целей тестирования я вызываю функцию с теми же данными, прежде чем что-либо еще.
DllFunctions.MyStructure[] structArray = new DllFunctions.MyStructure[2];
structArray[0].A = 10;
structArray[0].B = 10;
structArray[0].C = 15;
structArray[0].D = 15;
structArray[1].A = 8;
structArray[1].B = 12;
structArray[1].C = 13;
structArray[1].D = 17;
int arraySize = 2;
DllFunctions.MyStructure[] otherArray = new DllFunctions.MyStructure[0];
DllFunction.ProblematicFunction(structArray, arraySize, otherArray, 0);
Когда я запускаю приложение в режиме отладки, иногда мне выдается SEHException
, иногда нет. Что может вызвать случайное поведение, подобное этому?
EDIT : функция работает нормально, если вызывается из консольного приложения C ++ с теми же данными.
РЕДАКТИРОВАТЬ : подпись P / Invoke
[DllImport("mylib.dll")]
public extern static MyStructure ProblematicFunction(MyStructure[] structs1, int arrayLen1, MyStructure[] structs2, int arrayLen2);