문제

이 질문은 이미 여기에 답이 있습니다.

나는 지난 몇 년 동안 네이티브 C ++ 프로그래머로 일해 왔습니다. 이제 우리는 처음부터 새로운 프로젝트를 시작하고 있습니다. 따라서 플랫폼 독립 코드를 잃는 비용으로 C ++ CLI로 이동하는 것에 대한 귀하의 생각은 무엇입니까? C ++ CLI로 이동하여 얻을 수있는 특별한 이점이 있습니까?

도움이 되었습니까?

해결책

C ++, C# 및 .NET에 대한 경험을 바탕으로 다음을 추천합니다.

  • .NET 방식으로 가려면 C#을 사용하십시오.
  • .NET을 원하지 않으면 기존 C ++를 사용하십시오.
  • .NET 코드로 기존 C ++를 브리지를 해야하는 경우 C ++/CLI를 사용하십시오. .NET 호출 C ++ 클래스 및 C ++ 호출 .NET 클래스와 함께 작동합니다.

필요하지 않으면 C ++/CLI에가는 것은 의미가 없습니다.

다른 팁

전환하기 전에 고려해야 할 몇 가지 질문 :

1] 창문을 고수하는 것이 좋습니까? 다른 OS 용 .NET 클론이 있지만 앱은 투명하게 실행되지 않습니다. 필요하지 않은 복잡성.

2] 쓰레기 수집 지원을 위해 전환을 고려하고 있습니까? 그렇다면 C ++ 쓰레기 수집기 라이브러리 만 사용할 수 있습니다. 그리고 std :: shared_ptr을 활용하는 방법을 알아 내면 쓰레기 수집가가 필요하다고 느끼지 않을 수도 있습니다. 필요하지 않은 오버 헤드.

3] 쓰레기 수집과 활용할 수있는 모든 유용한 .NET 클래스로 인해 C ++/CLI를 고려하고 있습니까? 그렇다면 왜 C#으로 전환하지 마십시오. C ++/CLI는 과도기 기술이며 그러한 것들에 자원을 투자하지 않는 것이 가장 좋습니다. C#은 꽤 성숙하고 사용 가능 해지고 있습니다.

개인적으로, 나는 단지 C ++를 고수 할 것입니다;).

당신에게 혜택이 있습니까? 다른 OS로 전환하기 위해 멍청이를 잃게 될 것입니다.

.NET 앱과 통합하지 않는 한 귀찮게하지 마십시오. 확실히 STL/CLR을 사용하지 않으므로 성능이 정말 끔찍합니다.

.NET 클래스 라이브러리를 사용하기 위해 스위치를 뒤집는 유혹이 있지만 대안이 있습니다. 이렇게하면 코드를 쉽게 포트 할 수 없습니다.

또한 OSS의 부상이 증가하고있는 것으로 보이므로 이제는 크로스 플랫폼 라이브러리 및 도구를 사용하여 조사 할 때가 될 수 있습니다. Linux 앱을 Windows One보다 훨씬 쉽게 배포 할 수 있으며 (완전히 구성된 OS를 배송하여) Linux 클라이언트를 배포하면 (무료로) 더 나은 ROI를 얻을 수 있습니다.

내가 사업가라면 최소한 Windows 전용보다 Linux 또는 Mac에 배포 할 수있는 기능을 갖게 될 것입니다. 전략적으로, 나는 세계가 5 년 동안 Microsoft와 함께 머물렀다는 것을 내기하고 싶지 않습니다.

C ++/CLI로 이동하는 주요 장점은 .NET 라이브러리와 프레임 워크 자체 (가비지 수집 등)에 액세스하는 것입니다. 그러나 C ++/CLI가 존재하는 주된 이유를 알 수있는 한, 기존 C ++ 코드의 포팅이 .NET 프레임 워크에서 실행되도록 쉽게하는 것입니다. 새로운 프로젝트는 C#을 사용하도록 권장됩니다.

.NET 프레임 워크와 혼합 된 기존 C ++ 코드를 사용해야하는 경우 C ++/CLI를 사용하는 것이 합리적이지만 일반적으로 C#부터 시작해야합니다.

.NET에는 새 프로젝트가 광범위하게 사용해야하는 것이 있다면 (아마도 GUI 디자인 또는 무언가를 간단하게 사용해야하는 경우 C#을 사용하십시오. 그렇지 않은 경우 기본 C ++를 고수하십시오. 나는 당신이 그렇게함으로써 아무것도 잃을 것이라고 생각하지 않습니다.

나는 C ++/CLI를 너무 많이 싫어하여 설명 하듯이 스티어링을 권장하는 것이 좋습니다. 여기. 일부는 C ++/CLI를 표준 C ++와 C#사이의 브리지로 사용하는 것이 좋습니다. 그러나 C ++/CLI가 설계된 방식 덕분에 그러한 방식으로 사용하는 것이 매우 지루합니다 (호출 할 수있는 일반 C ++ 코드의 래퍼를 수동으로 만들어야합니다. 씨#). 그러므로 나는 추천 할 것이다 통음 대신 C#과 표준 C ++를 인터페이스하는 경우 (SWIG는 상당한 학습 곡선을 가지고 있음).

이 두 기사를 살펴보십시오.

C ++/CLI의 중요한 개요, Part I

C ++/CLI의 중요한 개요, 파트 II

나는 지금까지 내가 C ++/CLI가 "C ++에 대한 확장 세트"가 아니라고 확신한다고 믿는다 (많은 측면에서 실제로 C ++의 하위 집합이거나 C ++와 관련이 없음). 그리고 곱슬 괄호. 또한 C ++/CLI는 확실히 Windows 지향 프로그래밍 언어입니다. Solaris 10 서버 나 Nokia 휴대 전화가 기꺼이 실행되는 것은 확실히 언어가 아닙니다. C ++와 어떤 관련이 있습니까?

C ++/CLR을 사용하는 데있어 주요 단점 중 하나는 코드가 당황하지 않으면 IP (지적 재산)를 잃을 가능성이 있다는 것입니다. 일반적으로 나는 여기 다른 회원들의 진술에 동의합니다. MS .NET VM과 독립적 인 휴대용 코드를 원한다면 기본 C/C ++가 갈 길입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top