По данным Microsoft, эта совместимость обусловлена тем, что сборка содержит как собственный код, так и код MSIL, что позволяет собственному коду вызывать код .NET и наоборот. Но с технической точки зрения, как достигается такая совместимость между собственным кодом и кодом MSIL?
Предполагая, что собственный код хранится в разделе .text образа .NET PE, а код MSIL — в разделах .NET, как код MSIL может вызывать собственный код? И как собственный код может вызывать код MSIL? Как они общаются? Кто получит контроль над программой? Собственный код или управляемый код? Если управляемый код получит управление, он будет выполняться под CLR, но как выделить память в «родную» кучу? А если происходит обратное, то как машинный код выделяет память в куче CLR, если CLR управляет программой?
Например:
Код: Выделить всё
class Example {
public:
int example_method() {
return 1;
}
};
Я не нашел много технической информации по этому поводу; Буду признателен за вашу помощь.
Подробнее здесь: https://stackoverflow.com/questions/798 ... -c-cli-tec
Мобильная версия