Есть ли какая-то концепция в C++, как отражатель в.Net?

Мне нравится получать код из C++ dll, я знаю, что мы легко получаем из.Net dll по отражателю. Есть ли какой-либо метод в C++ для этого?

Заранее спасибо

5 ответов

Решение

C++ компилируется непосредственно в машинный код. Там нет языка-посредника, как в.NET. Есть некоторые дизассемблеры C++, на которые вы можете взглянуть. Декомпилятор Hex-Rays особенно хорош.

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

Короче нет. Любое "отражение" должно быть через какой-то механизм, закодированный вручную.

Код для интроспективных возможностей может быть сгенерирован из выходных данных Gcc-XML или внедрен в OpenC++, но сам по себе стандарт C++ не требует для этого каких-либо особых средств, и никакие средства / утилиты для этого не связаны с какими-либо популярными компиляторами. Для программы на C++ также возможно считывать информацию об отладке в своем собственном исполняемом файле, но она определенно не особенно переносима, быстра или вряд ли способна создать надежное решение.

Нет, C++ не имеет ничего общего с рефлектором RedGate и не способен на такие вещи. Дизассемблер не приблизится к тому, что вы ищете.

Другие вопросы по тегам