"Взаимодействие неуправляемого и управляемого кода"Автор(ы): Сергей Тепляков
Дата: 12.02.2009
Появление .Net Framework значительно облегчило создание многих видов приложений. Благодаря богатой библиотеки отпала необходимость в создании большого количества велосипедов, которые, в противном случае, создавались каждым из нас. Но, не смотря на это, существует множество «неуправляемого» кода, написанного на «голом» С++, который ничего не знает об .Net Framework и знать не может. Многие из этих приложений переписываются с использованием «управляемого» кода, но этот процесс не быстрый и у многих разработчиков появляется необходимость смешивать «управляемый» и «неуправляемый» код.
О том, как взаимодействовать с «неуправляемым» кодом из «управляемого» написано достаточно много, и это неудивительно, поскольку именно эта задача является наиболее распространенной в «смешанных» приложениях. Но бывает и обратная ситуация, у вас «неуправляемое» приложение (консольное приложение, служба или приложение, написанное с использование MFC), но появилась необходимость обратиться к некоторой управляемой библиотеке. Как быть? Переписывать заново нет ни времени, ни возможности, перекомпилировать с использованием ключа /clr, тоже не получается.
В данной статье я опишу общие принципы решения задачи обращения из «неуправляемого» кода к «управляемому», а также реализую оболочку для работы с распространенной библиотекой log4net.
как раз рассматривается механизм доступа из unmanaged приложений (даже скомпилированных без ключа /clr) к managed.