Есть ли в C ++ понятие отражателя в .Net? - PullRequest
6 голосов
/ 15 сентября 2010

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

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

Ответы [ 5 ]

16 голосов
/ 15 сентября 2010

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

5 голосов
/ 15 сентября 2010

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

1 голос
/ 15 сентября 2010

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

1 голос
/ 15 сентября 2010

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

1 голос
/ 15 сентября 2010

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

...