Visual Studio CLR项目

Visual Studio CLR项目

问题描述:

所以我想在Visual C++中尝试我的第一个CLR项目。所以我创建了控制台项目,但是因为我发现的关于CLR编程的每个教程都使用C#或Windows窗体,我只是尝试使用iostream编写标准C++ Hello Word应用程序(我认为在这种情况下代码不需要),但我会尽力我有一些编译错误,因为iostream使用预编译函数,而CLR应用程序编译成MSIL。我认为使用C++的CLR编程意味着只使用C++语法,但对I/O等有不同的功能。所以,基本上,我想问的是,任何本地控制台C++应用程序都可以编译为MSIL并由.NET框架运行?Visual Studio CLR项目

can any native console C++ app be compiled into MSIL and run by .NET? 

大多数代码可以看到http://msdn.microsoft.com/en-us/library/aa712815.aspx作为例外。

你的应用程序仍然会使用原生代码思想。还有/ clr:纯粹如果你想确保只使用CLR代码。

+0

好的,所以在这种情况下,编译器实际上包含cout的机器代码到CLR的MSIL代码中? – Vit 2010-04-04 19:40:09

+0

Sorta。它将包含CLR位直接调用的本地代码。 – sblom 2010-04-04 19:43:36

如果您尝试通过采用包含cout和大量STL的经典C++应用程序并将其编译为/clr来尝试了解托管编程,您将会感到沮丧。你应该能够编译任何有效的C++应用程序/ clr,但这并不意味着结果是值得的。如果你坚持这样做 - 一个快速提示 - 关闭预编译头。

如果您有某种控制台应用程序的C#教程,您可以随时将其转换为C++/CLI。 MSDN文档可以为你提供帮助,因为它通常在VB,C#和C++/CLI中有例子,你会很快拿起替换模式。因此,如果您的C#教程的功能为Console.WriteLine,则您的C++/CLI版本将具有Console::WriteLine。如果C#代码有Employee e = new Employee(),那么您的C++/CLI代码将有Employee^ e = gcnew Employee()等等。这种方法将使您比使用“经典C++”更快地学习C++/CLI,并在稍后尝试CLR。

也就是说,C++/CLI实际上不适用于编写控制台和winforms应用程序。这是为了互操作。因此,快速转向编写可调用大型现有C++库(包括头文件,链接到lib)的库,然后使用VB或C#中的一些UI(Windows,Web,wcf,无论),它们使用新的互操作库来简化访问旧C++代码的功能。如果你没有这样做的意图,你为什么学习C++/CLI?

还有C++/CLI书籍 - 我在我的办公室有几个。