У меня есть сторонняя библиотека C ++ и оболочка C # для нее (оба файла .dll), и я хотел бы создать список классов в любом из них, которые являются общедоступными, и функций, которые они предоставляют. Как это сделать?

0
CBoon 11 Сен 2018 в 18:16

1 ответ

Лучший ответ

Вы не можете. В файлах .dll просто отсутствует много информации. Например, там нет возвращаемых типов функций и определений классов.

Чтобы продемонстрировать, эти две функции генерируют идентичный ассемблерный код:

struct X
{
    int a;
};

int foo() { return 1; }
X bar() { return { 1 }; }

Есть много других вещей, которые теряются при переводе. Вы можете или не сможете получить некоторую помощь от символов отладки, если хотите потрудиться над их анализом, но это тоже довольно ужасно.

У вас нет файлов заголовков для библиотеки C ++? Они наверняка понадобятся вам для компиляции вашего собственного кода в соответствии с интерфейсом библиотеки, так зачем копаться в .dll?

1
Max Langhof 11 Сен 2018 в 15:25