可能重复:
Managed C++ 和 C++/CLI 有什么区别?
CLI/C++ 究竟是什么?它与普通的 C++ 有何不同?
我对 C++ 和 C++.NET 之间的区别感到困惑。
是的,C++ 是非托管代码,而 C++.NET 是托管代码。
我需要使用 C++ 编写一个项目。为了更好地构建 GUI,我希望使用 C++.NET。
我还有另一个纯 C++ 库(非托管 C++ DLL 文件),它是否可以在 C++.NET 项目中像普通 DLL 库一样使用?
可能重复:
Managed C++ 和 C++/CLI 有什么区别?
CLI/C++ 究竟是什么?它与普通的 C++ 有何不同?
我对 C++ 和 C++.NET 之间的区别感到困惑。
是的,C++ 是非托管代码,而 C++.NET 是托管代码。
我需要使用 C++ 编写一个项目。为了更好地构建 GUI,我希望使用 C++.NET。
我还有另一个纯 C++ 库(非托管 C++ DLL 文件),它是否可以在 C++.NET 项目中像普通 DLL 库一样使用?
是否正确认为C++是非托管代码,而C++.NET是托管代码?
不存在所谓的"C++.NET"。有C++/CLI,它基本上是带有Microsoft扩展的C++语言,使您可以编写面向.NET框架的代码。 C++/CLI代码编译为CLR字节码,并像C#一样在虚拟机上运行。 我们假设您实际上是在谈论C++/CLI。
关于这点,人们可以说标准C++是非托管的,而C++/CLI是托管的,但这是非常Microsoft的术语。 除非与C++/CLI进行比较,否则在讨论标准C++时不会看到“非托管”一词被用于此方式。
标准C++和C++/CLI都可以由同一个Visual C++编译器编译。前者是VC ++编译器的默认值,而需要编译后者模式时需要编译器开关。
我需要使用C++编写项目。为了更好地构建GUI,我倾向于使用C++.NET。
您可以像使用C++/CLI一样使用C++来构建GUI程序。只是因为标准C++中没有像.NET框架一样用于构建GUI的标准库,所以这会更加困难,但是有许多开源项目如Qt和wxWidgets提供了C++ GUI框架。
我还有另一个普通的C++库(非托管的C++ dll),它是否可以在C++.NET项目中作为普通dll库使用?
是的。处理不同的标准C++数据类型和.NET数据类型可能需要一些额外的工作,但您肯定可以使其正常工作。
Managed C++是微软提出的一组已经废弃的C++语法和语言扩展,包括语法和句法扩展、关键字和属性,旨在将C++语法和语言引入.NET Framework。这些扩展允许把C++代码作为托管代码以及与本地代码互操作,并且能够针对公共语言运行时(CLR)进行编译。然而,Managed C++不是一种完整的独立语言或全面的编程语言。
Managed C++
#using <mscorlib.dll>
using namespace System;
int main() {
Console::WriteLine("Hello, world!");
return 0;
}
纯C++
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, world!";
return 0;
}
例:
using System.Runtime.InteropServices;
[DllImport("YourDLLName")]
public static extern void UnmanagedMethodName(string parameter1);