2009-11-20 2 views
1

C++/CLI 컴파일러로 C++ 응용 프로그램을 간단히 컴파일 할 수 없다고 가정합니다. 그것이 어려울 지 궁금합니다. 아무도 이것을 시도한 적이 있습니까? 그렇다면 수정이 많이 필요합니까?C++을 C++/CLI로 포팅하는 것이 어렵습니까?

+0

가능한 복제본 : http://stackoverflow.com/questions/704388/please-describe-you-experience-of-using-microsoft-c-cli –

+0

@Kirill - Err ... no. 근처에도 안. –

답변

5

상황은 C++로 C를 컴파일하는 것과 비슷합니다. 대부분의 C는 C++로 컴파일되지만 모범 C++로 생각하면 오래 가지 않기 때문에 사용하기 전에 수정해야 할 가능성이 있습니다.

마찬가지로 대부분의 C++은 C++/CLI로 컴파일되지만, 실제로는 그렇게 사용하지 않을 가능성이 있습니다.

2

거의 모든 네이티브 C++ 코드에서 잘 작동합니다. 관리 코드와 마찬가지로 IL로 변환되어 런타임시 JIT가 컴파일됩니다. C++ interop 덕분에 관리되는 코드를 자유롭게 호출 할 수 있습니다. 내가 컴파일 할 수없는 유일한 관리되지 않는 코드 구조는 __fastcall 키워드입니다. const 키워드에 문제가 있습니다. 속성으로 불완전하게 시뮬레이트됩니다.하지만 메타 데이터를 가져올 때만 문제가됩니다. 지금처럼 헤더 파일을 계속 사용하십시오.

.NET 어셈블리는 일리노이뿐만 아니라 기계 코드도 저장할 수 있습니다. 컴파일러에 문제가 있거나 생성 된 코드가 최적이 아닌 것으로 의심되는 경우 IL 생성을 선택적으로 해제하여이 기능을 활용할 수 있습니다. 의 #pragma와 코드 랩 : 당신은 또한 당신이/CLR 컴파일 옵션을 사용하지 않고 개별적으로 컴파일 된 .libs에 대한 헤더를 #include 할 때의 #pragma를 사용해야합니다

#pragma managed(push,off) 
void CompiledToMachineCode() { 
    // etc.. 
} 
#pragma managed(pop) 

.

관련 문제