отражение — Просмотр членов C ++ DLL

У меня есть C ++ DLL, которая была написана в 1998 году, и я хочу просмотреть членов (свойства, поля, методы, конструкторы и т. Д.). Я понимаю, что о компании, написавшей DLL, больше нет, но она все еще используется.

Если у меня есть только DLL, это возможно? Или вам просто нужно знать, что внутри DLL, чтобы работать с ней. Если это возможно, как бы я пошел по этому поводу?

Я ищу работу с DLL из .Net через P / Invoke.

4

Решение

Взять это: http://www.dependencywalker.com/ , использование depends.exe чтобы открыть DLL, затем активируйте «Undecorate C ++ Functions» в меню «View». Я в основном использую его для нахождения зависимостей, но он также предоставляет точки входа в DLL.

Это не является доказательством того, что DLL, предоставляющая класс, не должна экспортировать его методы. Например, макет чисто виртуального метода достаточно однороден, чтобы вы могли представить свои экземпляры как указатели интерфейса, возможно, с помощью фабричной функции. Но это может решить вашу проблему.

И независимо от того, вам нужна копия ходунка зависимостей. 🙂

4

Другие решения

Вы можете использовать такой инструмент, как ИДА разобрать двоичный файл и попытаться разобрать имена функций, но это может быть сложно. Почему у вас есть только DLL? Было бы намного проще получить информацию из таблицы экспорта соответствующей библиотеки или, что еще лучше, из заголовочных файлов.

3

Вы можете использовать командную строку VS
простая команда:

dumpbin /exports <nameofdll>
0
По вопросам рекламы [email protected]