Задать вопрос
@alonargel
Программист

Почему возникает ошибка Fatal error. System.Runtime.InteropServices.SEHException?

Я использую через враппер на C# NET 7.0 библиотеку написанную на C. Библиотека скомпилирована через mingw и расположена в директории с программой сама библиотека и еще libgcc_s_seh-1.dll libstdc++-6.dll libwinpthread-1.dll Некоторые пользователи начали жаловаться что программа не запускается. Хотя я проводил тесты на системах из коробки от windows 7 до windows 11, все работало. Попросил прислать ошибку которая указывала на проблему с этой библиотекой:
Fatal error. System.Runtime.InteropServices.SEHException (0x80004005): External component has thrown an exception.
Repeat 2 times:
--------------------------------
at BloomLib.BloomFilter._check(IntPtr, Byte[], Int32)
--------------------------------
at BloomLib.BloomFilter.Check(Byte[])

Пробовал менять Any CPU на x64 - не помогает.
В чем может быть проблема? Повторюсь тестировал на всех системах и у меня все работает.
Upd: Запуск с правами админа ничего не дал.
  • Вопрос задан
  • 308 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Проблема в том, что библиотека бросила исключение. В ней какая-то ошибка. Это не проблема сборки или компиляции - это проблема в логике. Что-то вы не то библиотеке передаете. И там, допустим, деление на ноль. Или обращение по нулевому указателю.

Просите у пользователей все данные, чтобы воспроизвести проблему. Или может оно минидамп создает, тогда можно будет его в отладчике открыть.

Или добавляйте в программу очень многословный отладочный вывод на каждый чих, молитесь, чтобы проблема у пользователя воспроизвелась с логами, и медитируйте на лог и исходный код.

Судя по сигнатурам функции, возможно вы пустой массив туда передаете вместо чего то осмысленного.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы