dir.by  
  Search  
Programming, development, testing
Managed C++ (переходный код между C++ и C#)
Что такое Managed C++
  Looked at 6823 times    
 Что такое Managed C++ 
last updated: 30 October 2018
Managed C++ это дополненный язык C++ (Managed Extensions for C++).
Managed C++ это переходный код между C++ и C#.
Managed C++ код пишется в файле с расширением cpp или h (пишется в том же файле где и обычный C++ код)
Managed C++ позволяет одновременно работать как с классами C# .NET, так и с обычным кодом C++.
Managed C++ управляется средой CLR (Common Language Runtime) платформы .NET
Зачем и почему используют Managed C++
Причина 1
Чтобы перевести обычный C++ проект в проект .NET
Есть старый большой проект написанный на обычном C++.
Хочется перевести этот C++ проект на .NET технологию.
Для этого пишутся функции на Managed C++ внутри вызываются функции обычного C++.
.NET проект (C# код) вызывает функции Managed C++.

Тоесть когда в проекте обычный C++ код и проект нужно перевести на .NET то пишется дополнительные cpp файлы с Managed C++ кодом.
В проекте .Net добавляются cpp файлы с Managed C++ кодом.
При добавлении в .Net проект файлов или dll с Managed C++ кодом нужно ставить директиву:
Common Language Runtime Support = Common Language Runtime Support (/clr)
Эта директива ставится или для managed C++ dll или для отдельного файла c managed c++ кодом.
Пример .NET проект использует Managed С++ код для работы с классами C++
  файл book.h
С++ код и Managed C++ код
public ref class CBookManagedCode // Managed C++ класс
{
     public:
          CBookManagedCode();

     public:
          int CalculatePrice(interior_ptr<long> nBookID)
          {
               ... // C++ код
          }
};
  C#     файл book.cs
// Создаем класс CBookManagedCode
CBookManagedCode book = new CBookManagedCode();
int BookID = 0;
int price = book.CalculatePrice(ref BookID);
Причина 2
Чтобы использовать C# классы в обычном C++ проекте
Есть старый большой проект написанный на обычном C++.
Нужно в этом C++ проекте использовать C# классы (в C# работа с файлами быстрее, в C# удобнее работать с базой данных, в C# есть очень много классов списков и т.д.)
Так вот чтобы использовать в обычном C++ проекте классы C# нужно писать промежуточный код (Managed С++).

Напишем новое приложение на C++
1) Создадим новое C++ console application.
2) В свойствах проекта установим значение
Common Language Runtime Support = Common Language Runtime Support (/clr)
  Пример: C++ проект использует Managed С++ код для работы с классами C#
#include "stdafx.h" // подключаем С++ библиотеку
#include <iostream> // подключаем С++ библиотеку

using namespace System; // подключаем С# библиотеку для использования C# класса String
using namespace System::IO; // подключаем С# библиотеку для использования C# класса FileInfo

int _tmain(int argc, _TCHAR* argv[])
{
     TCHAR strTitle[] = _T("d://1.txt"); // C++ код

     String^ strFilename = gcnew String(strTitle); // managed c++ код создает String (класс C#)

     // получаем информацию о файле используя C# класс FileInfo
     FileInfo^ finfo = gcnew FileInfo(strFilename); // managed c++ код создает FileInfo (класс C#)

     // выводим на экран используем std::cout (функция C++)
     std::cout << "File size: " << finfo->Length << "\n";
     return 0;
}
Screenshot
Описание языка Managed C++
// Managed C++
String^ strFilename = gcnew String();

// C#
String strFilename = new String();

В Managed C++ для обозначения ссылок на объекты используется ^
В C# по умолчанию ссылка на объект (поэтому не используется никакого значка)

В Managed C++ для выделения памяти используется gcnew
В C# для выделения памяти используется new
Подробнее о Managed C++
Your feedback ... Comments ...
   
Your Name
Your comment (www links can only be added by a logged-in user)

  Объявления  
  Объявления  
 
Что такое Managed C++

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика