Использование управляемых объектов в классе C++

Я хочу вызвать членов класса C++/CLI из собственного кода C++. Компилятор запрещает мне это делать. Я знаю, что мы можем использовать собственные указатели/ссылки в управляемом коде, но не знаем, как идти наоборот. Может ли кто-нибудь помочь мне с этим, представив простой пример. Спасибо заранее.

1 ответ

Это невозможно. Макет памяти управляемых типов определяется JIT, поэтому, если ваш собственный код не использует интерфейс программирования CLR, он не может обнаружить и получить доступ к ним. Сохранение ссылок, видимых для сборщика мусора, является еще одной проблемой, хотя преодоление этого более прямолинейно.

Однако можно создавать собственные типы с помощью C++/CLI, и они будут иметь макет памяти, фиксированный во время компиляции, поэтому как управляемый, так и собственный код могут их использовать. Это путь к пересечению границы управляемого человека в обратном направлении. (Указатели функций, созданные из делегатов, являются еще одним способом пересечения в обратном направлении)

licensed under cc by-sa 3.0 with attribution.