2010-03-22 7 views
0

나는 C++/CLI로 작성된 라이브러리를 가지고 있는데 이것을 열고 싶습니다. 가능한 한 크로스 플랫폼이되고 다른 언어 (Java, Python 등)에서 사용할 수 있도록 바인딩을 작성할 수 있기를 바랍니다. 이를 위해 라이브러리는 최대한의 유연성을 위해 일반 C++로되어 있어야합니다. 논리적 인 구조가 이미 있다고 생각합니다. 표준 C++ 라이브러리에서 사용하는. NET 라이브러리를 대체해야합니다. 이것은 잘못된 생각입니까? 전환 할 때 무엇을주의해야합니까?C++/CLI에서 C++로 변환 할 때의 주의점

답변

3

그것은 더 문제가 될 수 있습니다. 여기에 당신이 갈 수 있습니다 :

  • 가비지 수집 C에서 + +입니다. 이것은 큰 것입니다. 이를 위해서는 개조 할 때 도서관의 재 설계가 필요할 수 있습니다. 적어도 C++ tr1이나 boost 라이브러리를 사용하고 있다면 shared_ptr을 사용하여 그곳으로 갈 수 있지만 중요한 근본적인 차이점이 있습니다. 예를 들어 순환 종속성에주의해야합니다. 또한 디버거에서 특정 지원없이 디버깅을 어렵게 만듭니다.
  • C++ stl 또는 표준 라이브러리에 해당하는 .Net 클래스의 함수. 아마도 가장 큰 어려움은 거기에 많은 차이가 있기 때문에 작성한 문자열 조작 코드 일 것입니다.
  • 클래스 라이브러리/어셈블리는 C++에 내장되어 있지 않습니다. 모든 플랫폼에는 동적 또는 공유 라이브러리를 만드는 고유 한 방법이 있으며 C++ 공유 라이브러리는 많지 않습니다. 대부분의 경우 C 라이브러리 만 지원합니다. 모든 것을 정적 라이브러리로 만들 준비를하십시오.
  • 모든 리소스를 직접 관리해야합니다.
2

는 C++로 C++/CLI의 포트를 해본 적이 있지만, 내 마음에 오는 :

  • 것은 당신이 메모리 누수를 해달라고 있는지 확인합니다. 가능한 경우 gcnew 대신 스마트 포인터를 사용하십시오 (그렇지 않은 경우 코드가 예외 안전인지 확인하십시오).
  • 은 (내장은 STL의 유형을 포함하지 않습니다! 당신이 오픈 소스를 가면 그러나이 강제적 필요가 없습니다) 확인하여 라이브러리 인터페이스는 유형을 내장 구성되어 있는지 확인보다 가치
관련 문제