ExecutionEngineException выдается при загрузке родной DLL - PullRequest
1 голос
/ 16 апреля 2010

У меня есть 32-битное приложение .net, которое использует собственную 32-битную DLL через DllImport (). Нативная DLL - это наша внутренняя библиотека для анализа файлов, и мне нужно использовать ее, так как перенос ее на C # будет проблемой, если люди обновят ее (ее использует другое программное обеспечение).

Проблема в том, что когда я пытаюсь выполнить какой-либо метод в собственной DLL, я получаю System.ExecutionEngineException . Фактически, я сократил управляемое приложение до простого тестера, который просто вызывает собственный метод, но все равно не работает.

Я нахожусь на 64-битной Windows 7, но это не должно иметь значения, так как я собираю все как 32-битные двоичные файлы.

Что также интересно, когда я смотрю на встроенную DLL в Dependency Walker, она показывает, что она не может найти msvcr90.dll - но когда я открываю любые другие наши собственные DLL в Dependency Walker, она может на них ссылаются msvcr90.dll просто отлично. Может ли быть какая-то ошибка в компиляции нативной DLL, которая испортила ссылки на DLL?

1 Ответ

1 голос
/ 21 апреля 2010

ОК - проблема была немного туманной. По-видимому, коллега изменил метод нативной библиотеки DLL, чтобы он содержал один параметр со значением по умолчанию (это прекрасно обрабатывается C ++), но, как мы знаем, C # 3.5 не . После ввода значения для этого параметра все работало нормально!

...