2015-02-28 3 views
4

Я пытаюсь использовать метод Console::SetCursorPosition(int, int). Когда я добавляю строку using namespace System;, как показано в примере C++ из предыдущей документации MSDN, я получаю ошибку "Error: name must be a namespace name". Я пробовал вещи пару часов, но, к сожалению, безуспешно. Я наткнулся на тонну документации для Visual Studio 2010 и 2012 года, но очень мало для 2013 года. Ближайший я пришел Lib Files as Linker Input. Шаги 1-3 достаточно легки, но шаг 4 мне не понятен: «Измените свойство дополнительных зависимостей». Глядя на то, что уже существует, кажется, что я могу просто добавить файл .lib. Но у меня нет System.lib.с использованием системы имен; в Visual Studio 2013

Так расстроен, так смущен.

Как использовать пространство имен System в Visual Studio 2013 Update 4 для C++?

+4

Параметр 'system' пространство имен является частью .Net framework, который доступен для проектов «CLR», а не в собственных проектах Win32 C++. – SleuthEye

ответ

4

Чтобы формализовать и развернуть мой комментарий, Console class и вообще System namespace являются частью платформы .NET.

В этом контексте вкладка «C++», включенная на странице документации MSDN метода Console::SetCursorPosition(int, int), фактически относится к C++/CLI language. Язык C++/CLI отличается (хотя и намеренно подобным) с C++ language. Соответственно, язык C++/CLI содержит различные конструкции, которые не распознаются набором инструментов компилятора C++, используемым при компиляции проектов Win32.

Иными словами, чтобы избавиться от ошибки "Error: name must be a namespace name", вам нужно будет преобразовать проект Win32 C++ в проект CLR. Самый простой способ сделать это было бы создать новый проект, выбрав один из шаблонов под «Visual C++»/«CLR»:

Creating new C++ CLR project

эквивалент .lib depdendencies файлов (по отношению к вашей Lib Files as Linker Input ссылка) проектов Win32 для проекта CLR будет ссылками на сборку. Вы бы затем, как правило, добавить эти ссылки на сборки с «Добавить ссылки» в разделе «Общие свойства, ссылки» Свойства проекта:

CLR assembly references

Однако, в вашем конкретном случае, вы можете очень хорошо найти, что ссылка System сборки уже включен как часть шаблона проекта CLR. Для получения более подробной информации вы можете проверить How to: Add or Remove References на MSDN.

Наконец, если вы абсолютно хотите вручную преобразовать существующий проект Win32, вам необходимо установить свойства проекта «Common Language Runtime Support» в разделе «Общие» и вкладки «C/C++, General» на один из /clr , /clr:pure, /clr:safe или /clr:oldSyntax (в зависимости от ваших конкретных требований к приложению, если вы просто играете вокруг, вы можете начать с /clr) для всех конфигураций и платформ, а также указать целевую версию каркаса .Net, напрямую отредактировав .vcxproj (как указано в this answer). Вам также необходимо будет добавлять зависимости сборки, как и в случае нового подхода к проекту.

1

У вас есть проект Win32 Console Application, и вы используете .NET пространство имен. В консольном приложении Win32 только 4-5 пространства имен находятся в стандартной библиотеке, включая std. Попробуйте using namespace std; наверху.

1

Вы должны установить Common Language Runtime Support (/clr) в Свойства конфигурации - Общие сведения:

enter image description here

И Свойства конфигурации - C/C++ - Общие сведения:

enter image description here