ExecutionEngineException возникает при загрузке родной dll

У меня есть 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?


person Axarydax    schedule 16.04.2010    source источник


Ответы (1)


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

person Axarydax    schedule 21.04.2010