Есть ли какая-то концепция в C++, как отражатель в.Net?
Мне нравится получать код из C++ dll, я знаю, что мы легко получаем из.Net dll по отражателю. Есть ли какой-либо метод в C++ для этого?
Заранее спасибо
5 ответов
C++ компилируется непосредственно в машинный код. Там нет языка-посредника, как в.NET. Есть некоторые дизассемблеры C++, на которые вы можете взглянуть. Декомпилятор Hex-Rays особенно хорош.
Я полагаю, вы говорите о неуправляемом C++. В этом случае это невозможно. C++ компилируется в машинный код в отличие от управляемых языков, которые компилируются в промежуточный язык, который содержит метаданные о скомпилированном коде.
Короче нет. Любое "отражение" должно быть через какой-то механизм, закодированный вручную.
Код для интроспективных возможностей может быть сгенерирован из выходных данных Gcc-XML или внедрен в OpenC++, но сам по себе стандарт C++ не требует для этого каких-либо особых средств, и никакие средства / утилиты для этого не связаны с какими-либо популярными компиляторами. Для программы на C++ также возможно считывать информацию об отладке в своем собственном исполняемом файле, но она определенно не особенно переносима, быстра или вряд ли способна создать надежное решение.
Нет, C++ не имеет ничего общего с рефлектором RedGate и не способен на такие вещи. Дизассемблер не приблизится к тому, что вы ищете.