2010-01-22 5 views
6

네이티브 C++로 작성된 응용 프로그램을 .NET 가상 컴퓨터에서 실행하고 싶습니다. Visual Studio 2008 컴파일러를 사용하여 C++/CLI를 C++/CLI로 다시 컴파일 할 생각이었습니다. 유감스럽게도이 방법에 대한 문서를 찾을 수 없으므로 제 질문은Visual Studio에서 C++ 코드를 C++/CLI로 이식하는 방법은 무엇입니까?

  • 실제로 의미가 있습니까? 나는 불가능을 시도하고 있는가?
  • 주제에 관한 정보는 어디에서 찾을 수 있습니까? > 일반 - -> 공용 언어 런타임 지원 - 그것은 지금 CLR라고/CLR

    에> 변화

+1

IL로 변환 할 수없는 C++ 코드가 거의 없습니다. 나는 __fastcall에 대해서만 알고 있습니다. 메타 데이터는 문제이지만 전통적인 헤더 파일을 사용하면 쉽게 우회 할 수 있습니다. 그냥 스위치를 플립, 컴파일러는 불평합니다. –

+0

낡은 질문에 유감스럽게 생각해서 유감이지만 IL이라는 약어는 인식하지 못합니다. 관련 키워드와 함께 검색하면 시카고에서 많은 직업을 얻을 수 있습니다. \ IL은 무엇을 의미합니까? – StockB

+1

IL은 Common Intermediate Language의 경우 CIL입니다. http://en.wikipedia.org/wiki/Common_Intermediate_Language. MSDN 문서를 읽는다면 Common Language Runtime에 대한 CLR을 찾으십시오. (CIL 코드는 CLR 플랫폼에서 실행되므로 원하는 것을 모두 참조하고 있습니다.) Visual Studio 2010에서는 새 프로젝트/C++/CLR/Windows Form App (또는 기타)을 선택합니다. VS 2012에서 C++로 Windows Form이 필요한 경우 수행 할 작업은 http://stackoverflow.com/questions/11130915/windows-form-clr-application-in-visual-studio-2012-rc를 참조하십시오. – ToolmakerSteve

답변

7

많은 원시 C++ 코드가 실제로는 C++/CLI에서 컴파일되고 실행됩니다. 이것은 실질적으로 일종의 원시 Win32 함수를 호출하고 OpenGL과 같은 표준 C 라이브러리를 사용할 수있는 컴파일러입니다. COM 인터페이스를 직접 호출 할 수도 있습니다 (네이티브 C++ 컴파일러로 수행 할 수있는 모든 작업).

.Net 라이브러리도 사용할 수 있지만이 경우 관리 클래스 (참조 클래스 키워드 사용)를 만듭니다. gcnew을 사용하여 이러한 클래스에 대한 메모리를 할당합니다 (가비지 수집 힙에서). 일반 클래스의 메모리는 여전히 및 (가비지 수집되지 않은 표준 힙의)을 사용하여 할당됩니다.

간략히 말하자면 관리되는 클래스와 관리되지 않는 클래스를 전환 할 때 약간의 마찰이 있지만 비트와 조각으로 .Net으로 마이그레이션 할 수 있습니다.

이 책이 유용함을 발견했습니다 : Pro Visual C++/CLI.

5

이동 특성을 투사합니다. 약 herehere에 대해 읽어보십시오.

2

C++에서는/clr을 사용하여 코드베이스를 간단히 다시 컴파일 할 수 있습니다. 이 기술은 IJW (Just Just Works)라고 불리우므로 CLR로 기존 클래스를 쉽게 사용할 수 있습니다.

관련 문제