@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: Запуск с правами админа ничего не дал.
  • Вопрос задан
  • 242 просмотра
Решения вопроса 1
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Проблема в том, что библиотека бросила исключение. В ней какая-то ошибка. Это не проблема сборки или компиляции - это проблема в логике. Что-то вы не то библиотеке передаете. И там, допустим, деление на ноль. Или обращение по нулевому указателю.

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

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

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

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

Войти через центр авторизации
Похожие вопросы