我对区分C++和C++ .NET存在疑问.
那是对的C++是非托管代码而C++ .NET是托管代码吗?
我需要用C++编写一个项目.为了更好地构建GUI,我更喜欢使用C++ .NET.
我还有另一个普通的C++库(非托管C++ DLL文件),是否可以将它用作C++ .NET项目中的普通DLL库?
In *_*ico 36
这是正确的C++是非托管代码,C++ .NET是托管代码.
没有"C++ .NET"这样的东西.有C++/CLI,它基本上是带有Microsoft扩展的C++,允许您编写面向.NET框架的代码.C++/CLI代码编译为CLR字节码,并像C#一样在虚拟机上运行.我假设你实际上在谈论C++/CLI.
关于这一点,可以说标准C++是非托管的,而C++/CLI是托管的,但这是微软的术语.除非与C++/CLI相比,否则在谈论标准C++时,你永远不会看到"非托管"这个术语.
标准C++和C++/CLI都可以由相同的Visual C++编译器编译.前者是VC++编译器的默认设置,而编译器开关需要在后一种模式下进行编译.
我需要用C++编写一个项目.为了更好地构建GUI,我更喜欢使用C++ .NET.
您可以使用C++和C++/CLI构建GUI程序.这更难,因为标准C++中没有用于构建GUI的标准库,就像.NET框架一样,但是有很多项目像Qt和wxWidgets那样提供了C++ GUI框架.
我还有另一个普通的C++库(非托管C++ DLL),是否可以将它用作C++ .NET项目中的普通dll库?
是.处理不同的标准C++数据类型和.NET数据类型可能需要一些额外的工作,但你当然可以使它工作.
Sof*_*ner 11
托管C++是一个现在已弃用的 Microsoft与C++的偏差集,包括语法和语法扩展,关键字和属性,以将C++语法和语言引入.NET Framework.这些扩展允许C++代码以托管代码的形式定位到公共语言运行时(CLR),并继续与本机代码进行互操作.托管C++不是一个完整的独立或完整的编程语言.
托管C++
#using <mscorlib.dll>
using namespace System;
int main() {
Console::WriteLine("Hello, world!");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
香草C++
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, world!";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
嗯...... C++ .NET有点用词不当.您可以使用visual studio .NET在C++中编程.那就是它之前被称为它的东西.现在有几天人们称它为Visual Studio,带有点NET名字.好吧,至少闪屏不再是徽标中的大型.NET了.
有点理解,使用Visual Studio(VS),您可以使用托管和非托管语言进行编程(btw有很多选择).
如果您想使用Visual Studio在C++中编程,您有两种选择:
非托管或本机C/C++.这是您一直都知道的旧的(或者我也是新的)C++,并且您使用非托管内存进行编程.
托管C++.他们称之为C++/CLI.这是通过CLI读取C++,而不是通过CLI划分的C++!这是C++,它具有额外的关键字,以及一些比本机C++更多的语法元素.这允许您使用.NET Foundation类库并在.NET框架中执行其他有趣的操作.这当然使用垃圾收集器为托管类型的内存.
就个人而言,我最喜欢的语言是C#,但是如果你需要在C++和.NET之间进行互操作而不是使用Managed C++.这很容易做到,我认为比其他P/Invoke更容易.
如果您要参加某个项目,我建议您使用C#进行UI,并充分利用它提供的所有功能.然后让该引用包含包含C++代码的混合模式托管库.我认为这对你来说会容易得多.
你的上一个问题的答案是肯定的,你绝对可以在你的应用程序中使用它.
以下是依赖项的工作方式:
[C#App/GUI]依赖于[托管C++程序集]取决于[Native C++ Lib]
归档时间: |
|
查看次数: |
58529 次 |
最近记录: |