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