在Visual Studio 2013中使用命名空间System;

4
我正在尝试使用Console::SetCursorPosition(int, int)方法。在我添加using namespace System;这行代码后,就像之前MSDN文档中的C++示例一样,我收到了错误提示"Error: name must be a namespace name"。我已经尝试了几个小时的东西,但令人沮丧的是没有成功。我找到了大量关于Visual Studio 2010和2012的文档,但对于2013的文档很少。我最接近的是将库文件作为链接器输入。步骤1-3很容易理解,但第4步对我来说不太清楚:“修改附加依赖项属性”。看看已经存在的内容,似乎我可以添加一个.lib文件。但我没有System.lib。

如此沮丧,如此困惑。

在Visual Studio 2013 Update 4中如何使用System命名空间?


6
System 命名空间是 .Net 框架的一部分,仅适用于“CLR”项目,而不适用于本地 Win32 C++ 项目。 - SleuthEye
对于Visual Studio 2019,您可以在此处查看答案:https://dev59.com/c2Qn5IYBdhLWcg3wkH3U#65120395 - Yinon_90
3个回答

8

为了更加明确和详细地阐述我的评论,Console和通常的System命名空间是.NET框架的一部分。

在这个背景下,MSDN文档页面中包含"C++"选项卡的Console::SetCursorPosition(int, int)方法实际上指的是C++/CLI语言。C++/CLI语言与C++语言有所不同(尽管故意相似)。因此,C++/CLI语言包含各种构造,这些构造在编译Win32项目时使用的C++编译器工具集无法识别。

换句话说,要消除“Error: name must be a namespace name”错误,您需要将Win32 C++项目转换为CLR项目。最简单的方法是创建一个新项目,在“Visual C++”/“CLR”下选择一个模板:

Creating new C++ CLR project

对于CLR项目来说,与Win32项目中.lib文件依赖项(相对于您的链接器输入的库文件)等效的内容将是程序集引用。然后,您通常会在“公共属性、引用”项目属性下使用“添加引用”来添加这些程序集引用。请保留HTML标签。

CLR assembly references

然而,在您的特定情况下,您可能会发现System程序集引用已经包含在CLR项目模板中。您可以查看MSDN上的如何添加或删除引用以获取更多详细信息。
最后,如果您绝对想要手动转换现有的Win32项目,则需要在“常规”和“C/C++,常规”选项卡下设置“通用语言运行时支持”项目属性为/clr/clr:pure/clr:safe/clr:oldSyntax之一(取决于您的具体应用要求;如果您只是想玩玩,您可能需要从/clr开始),并且为所有配置和平台指定目标.Net框架版本,直接编辑.vcxproj(如this answer所示)。您还需要像上面的新项目方法一样添加程序集依赖项。

4
您需要在“属性配置-常规”中设置“公共语言运行时支持(/clr)”: enter image description here 同时,在“属性配置-C/C++-常规”中设置: enter image description here
请注意,保留HTML标记。

非常感谢你。 - Baptiste

1
你正在进行一个Win32控制台应用程序的项目,使用了.NET命名空间。在标准库中,Win32控制台应用程序只有4-5个命名空间,其中包括std。请在顶部尝试使用命令“using namespace std;”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接