2010-04-16 3 views
1

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

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

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

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

ответ

1

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

Смежные вопросы