Каковы шаги/инструменты по устранению неполадок для взаимодействия C# с Native?

У меня есть SDK, написанный в основном на C#. У нас есть нативный код, написанный из соображений безопасности и производительности. Мы используем DllImport для взаимодействия с нативным кодом. Есть несколько функций, в которых я получаю ошибку "Unable to find an entry point named '...' in DLL '...'.":"". Я проверил, что функция, которая не найдена, экспортируется. Я проверил, что у него нет искаженного имени. Я проверил, что параметры совпадают. Я пробовал несколько разных соглашений о вызовах в атрибуте DllImport. Я думаю, что могу продолжать пробовать это случайным образом, но я надеюсь, что есть более прямой подход.

Кто-нибудь знает инструмент или метод для получения дополнительной информации в таком случае? Насколько я должен быть уверен, что dll найден? Получу ли я это исключение, если параметры неверны? Любая помощь будет оценена по достоинству.

Пэт О


person Pat O    schedule 11.06.2009    source источник
comment
Я смог выяснить проблему, но у меня до сих пор нет лучшего подхода, чем копаться, чтобы посмотреть, что к чему.   -  person Pat O    schedule 10.07.2009


Ответы (3)


Нет, работает ли это в Full Framework или нет, но вы можете попробовать:

http://blogs.msdn.com/stevenpr/archive/2005/06/22/431612.aspx

person Bryan    schedule 07.10.2009

Я использую Dependency Walker для поиска экспортированных функций в C++ DLL. Это поможет убедиться, что вы пытаетесь импортировать правильное имя и т. д.

person C. Ross    schedule 11.06.2009
comment
Спасибо, я убедился, что экспорт dll соответствует моим ожиданиям. - person Pat O; 12.06.2009

Я использую dumpbin чтобы получить мой список экспорта...

Удачи!

person Christopher Karper    schedule 07.07.2009