Подтвердить что ты не робот

В чем основное отличие между С++ и С++.NET?

Возможный дубликат:
В чем разница между управляемым С++ и С++/CLI?
Что такое CLI/С++? Как он отличается от "нормального" С++?

Я сомневаюсь в различии между С++ и С++. NET.

Правильно ли это С++ - неуправляемый код и С++.NET - управляемый код?

Мне нужно запрограммировать проект на С++. Для лучшего построения графического интерфейса я бы предпочел использовать С++. NET.

У меня также есть другая простая библиотека С++ (неуправляемый DLL файл С++), можно ли использовать ее как обычную библиотеку DLL в проекте С++.NET?

4b9b3361

Ответ 1

Правильно ли это С++ - это неуправляемый код и С++.NET - управляемый код.

Нет такой вещи, как "С++. NET". Там С++/CLI, который в основном является С++ с расширениями Microsoft, которые позволяют писать код, ориентированный на платформу .NET. Код С++/CLI компилируется в байт-код CLR и запускается на виртуальной машине, как и на С#. Предположим, вы на самом деле говорите о С++/CLI.

В связи с этим можно сказать, что стандартный С++ неуправляемый и управляется С++/CLI, но это очень терминология Microsoft. Вы никогда не увидите, что термин "неуправляемый" используется таким образом, когда речь идет о стандартном С++, если только в сравнении с С++/CLI.

Оба стандартных С++ и С++/CLI могут быть скомпилированы одним и тем же компилятором Visual С++. Первый используется по умолчанию для компиляторов VС++, в то время как для компиляции в последнем режиме необходим компилятор.

Мне нужно запрограммировать проект на С++. Для лучшего построения графического интерфейса я предпочитает использовать С++. NET.

Вы можете создавать графические программы на С++, а также С++/CLI. Это просто сложнее, потому что в стандартном С++ нет стандартной библиотеки для создания графического интерфейса, такого как .NET framework, но есть много проектов, например Qt и wxWidgets, которые предоставляют инфраструктуру графического интерфейса С++.

У меня также есть другая простая библиотека С++ (неуправляемая dll С++), будет ли она можно использовать его как обычную библиотеку dll в проекте С++.NET?

Да. Может потребоваться дополнительная работа для работы с различными стандартными типами данных С++ и типами данных .NET, но вы можете наверняка заставить их работать.

Ответ 2

Управляемый С++ - это теперь устаревший набор отклонений Microsoft от С++, включая грамматические и синтаксические расширения, ключевые слова и атрибуты, чтобы привести синтаксис С++ и язык к .NET Framework. Эти расширения позволяют использовать код С++ для среды Common Language Runtime (CLR) в виде управляемого кода, а также продолжать взаимодействие с собственным кодом. Управляемый С++ не был полностью автономным или полноценным языком программирования.

Управляемый С++

#using <mscorlib.dll>
using namespace System;

int main()  {
  Console::WriteLine("Hello, world!");
  return 0;
}

Vanilla С++

#include <iostream>
using namespace std;

int main()
{
  cout << "Hello, world!";
 return 0;
}

Ответ 3

Ну... С++.NET - это неправильное название. Вы можете программировать на С++ с помощью visual studio.NET. Хорошо, что это было вызвано еще некоторое время назад. Теперь люди дня просто называют это Visual Studio, с мотивом dot NET. Ну, по крайней мере, заставка не имеет большого логотипа .NET в логотипе.

Понятно, что с помощью Visual Studio (VS) вы можете программировать на управляемых и неуправляемых языках (много вариантов там, кстати).

Если вы хотите запрограммировать на С++ с помощью Visual Studio, у вас есть два варианта:

  • Неуправляемый или собственный C/С++. Это старый (или новый, я думаю, тоже) С++ что вы всегда знали, и вы программируете с неуправляемой памятью.

  • Управляемый С++. Они называют этот С++/CLI. Это прочитано С++ по CLI, а не С++ делится на CLI! Это С++, который имеет дополнительные ключевые слова, и несколько дополнительные синтаксические элементы, чем собственный С++. Это позволяет использовать библиотеку классов .NET Foundation и делать другие забавные вещи в .NET framework. Это, конечно, использует сборщик мусора для памяти для управляемых типов.

Лично мой любимый язык - С#, но если вам нужно взаимодействовать между С++ и .NET, то определенно используйте Managed С++. Это очень легко сделать, и я думаю, что это проще, чем другие материалы P/Invoke.

Если вы собираетесь в какой-то проект, я бы предложил вам сделать свой интерфейс в С# и воспользоваться всем, что он может предложить. Затем используйте эту ссылку в управляемой библиотеке смешанного режима, которая содержит ваш код на С++. Думаю, вам будет намного легче.

Ответ на ваш последний вопрос: да, вы можете определенно использовать его в своем приложении.

Вот как будут работать зависимости:

[С# App/GUI] зависит от [Managed С++ assembly] зависит от [Native С++ Lib]

Ответ 4

  • Да, С++ - неуправляемый код и С++.NET управляется.
  • Да, вы можете использовать свою неуправляемую С++ DLL в своем проекте С++.NET. Но для этого вам нужно написать обертку. Это означает, что вам необходимо определить неуправляемые методы, которые вы хотите получить в своем проекте С++.NET.

Пример:

using System.Runtime.InteropServices;

[DllImport("YourDLLName")]
public static extern void UnmanagedMethodName(string parameter1);