2010-04-04 2 views
2

, поэтому я хотел попробовать свой первый проект CLR в Visual C++. Поэтому я создал консольный проект, но так как каждый учебник, который я нашел о программировании на CLR, использовал C# или формы Windows, я просто попытался написать стандартное приложение C++ Hello Word с помощью iostream (я думаю, что код в этом случае не нужен), но я, хотя это даст мне некоторая ошибка компиляции, так как iostream использует предварительно скомпилированные функции, а приложение CLR компилируется в MSIL. Я предположил, что программирование CLR с использованием C++ означает просто использование синтаксиса C++, но различные функции для ввода-вывода и так далее. Итак, в основном, я хочу спросить, может ли скомпилировано любое собственное консольное приложение C++ в MSIL и работать с .NET framework?Проект Visual Studio CLR

ответ

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

В большинстве случаев код можно увидеть http://msdn.microsoft.com/en-us/library/aa712815.aspx за исключениями.

Ваше приложение по-прежнему будет использовать собственный код. Также есть/clr: pure, если вы хотите, чтобы использовался только код CLR.

+0

Итак, в этом случае компилятор действительно включает машинный код для cout в код MSIL для CLR? – Vit

+0

Сорта. Он будет включать в себя собственный код, который бит CLR вызовет напрямую. – sblom

2

Вы будете разочарованы, если попытаетесь узнать о управляемом программировании, взяв классическое приложение на C++ с изображением cout и множеством STL, и постройте его /clr. Предполагается, что вы сможете скомпилировать любое действительное приложение C++ для C++, но это не значит, что результат будет полезен. Быстрый совет, если вы настаиваете на том, чтобы идти таким путем - выключите предварительно скомпилированные заголовки.

Если у вас есть учебное пособие по 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++/CLI, чем начать с «классического C++» и попробовать CLR-ify позже.

Сказанное, C++/CLI действительно не для написания консольных приложений и приложений winforms. Это для взаимодействия. Поэтому быстро переходим к написанию библиотек, которые вызывают большие библиотеки C++ (включая заголовок, ссылку на lib), а затем некоторый пользовательский интерфейс (windows, web, wcf и т. Д.) В VB или C#, которые используют вашу новую библиотеку interop для более простых доступ к функциональности старого кода на C++. Если у вас нет намерения делать это, почему вы изучаете C++/CLI?

Также есть книги C++/CLI - у меня есть несколько в моем офисе.

Смежные вопросы