.NET считается «управляемой» платформой — это означает, что код выполняется в виртуальной машине, которая должна следить за соблюдением некоторых правил (корректность адресов объектов, к которым обращается программа, отсутствие выхода за пределы массивов). На такой платформе программисту живётся очень удобно — ровно до тех пор, пока ему не приходится начать интеропиться с кодом, написанным вне платформы. Сейчас, с распространением .NET (Core) на новые платформы, это становится ещё более важным — потому для новых платформ ещё не написано такого большого количества managed-библиотек, и поэтому частенько приходится делать свои обёртки для нативного кода.
К счастью, .NET обладает богатым инструментарием, который позволяет практически прозрачно общаться с нативным кодом. Этот доклад познакомит вас с основными техниками вызова нативных функций из .NET-приложений, особенностями размещения в памяти структур, которыми может обмениваться управляемый и неуправляемый код, а также некоторыми подводными камнями, которые обязательно оказываются на пути у тех, кто начинает работу с нативным кодом из .NET.
В докладе Иван будет говорить обо всех современных реализациях .NET: о .NET Framework, Mono и .NET Core.