2010-04-04 5 views
2

그래서 첫 번째 CLR 프로젝트를 Visual C++로 시험해보고 싶었습니다. 그래서 콘솔 프로젝트를 만들었지 만 CLR 프로그래밍에 관한 모든 자습서에서는 C# 또는 Windows 양식을 사용하고 있었기 때문에 iostream을 사용하여 standart C++ Hello Word 응용 프로그램을 작성해 보았습니다. (이 경우에는 코드가 필요하지 않습니다) 나 iostream은 미리 컴파일 된 함수를 사용하고 CLR 앱은 MSIL로 컴파일되므로 일부 컴파일 오류가 발생합니다. C++을 사용하는 CLR 프로그래밍은 C++ 구문을 사용한다는 것을 의미하지만 I/O 등의 다른 기능을 사용한다고 가정했습니다. 그래서, 기본적으로, 내가 물어보고 싶은 것은 모든 네이티브 콘솔 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 코드 만 사용되도록하려면/clr : pure도 있습니다.

+0

이 경우 컴파일러는 실제로 CLUT에 대한 MSIL 코드에 대한 cout 컴퓨터 코드를 포함하고 있습니까? – Vit

+0

분류. 여기에는 CLR 비트가 직접 호출 할 원시 코드가 포함됩니다. – sblom

2

cout 및 많은 STL을 갖춘 고전적인 C++ 응용 프로그램을 사용하여 관리되는 프로그래밍에 대해 자세히 알아보고 빌드하면 /clr이라고하면 실망하게 될 것입니다. 유효한 C++ app/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()이됩니다. 이 방법을 사용하면 "classic C++"로 시작하고 CLR-ify로 나중에 시도하는 것보다 C++/CLI를 더 빨리 익힐 수 있습니다.

즉, C++/CLI는 콘솔 및 winforms 응용 프로그램을 작성하는 데 실제로 사용되지 않습니다. 그것은 interop을위한 것입니다. 따라서 꽤 빨리 기존의 큰 C++ 라이브러리 (헤더, lib에 대한 링크 포함)를 호출하는 라이브러리를 작성한 다음 VB 또는 C#에서 새 interop 라이브러리를 더 간단하게 사용하는 일부 UI (창, 웹, wcf 등)로 이동하십시오. 이전 C++ 코드의 기능에 대한 액세스. 혹시 그런 의도가 없다면 왜 C++/CLI를 배우고 있습니까?

또한 C++/CLI 서적이 있습니다. 저는 사무실에 여러 권 있습니다.

관련 문제