В чем основное отличие между С++ и С++.NET?
Возможный дубликат:
В чем разница между управляемым С++ и С++/CLI?
Что такое CLI/С++? Как он отличается от "нормального" С++?
Я сомневаюсь в различии между С++ и С++. NET.
Правильно ли это С++ - неуправляемый код и С++.NET - управляемый код?
Мне нужно запрограммировать проект на С++. Для лучшего построения графического интерфейса я бы предпочел использовать С++. NET.
У меня также есть другая простая библиотека С++ (неуправляемый DLL файл С++), можно ли использовать ее как обычную библиотеку DLL в проекте С++.NET?
Ответы
Ответ 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);