문제

C++/CLI에 있는 중소 규모 프로젝트가 있습니다.저는 C++/CLI의 구문 확장을 정말 싫어하며 C#으로 작업하는 것을 선호합니다.하나를 다른 것으로 적절하게 번역하는 도구가 있습니까?

편집하다: 이전에 Managed C++라고 말한 것은 분명히 c++/CLI를 의미한 것 같습니다.

도움이 되었습니까?

해결책

C++ 코드가 순수 관리형인 경우에만 관리형 C++ 코드(및 C++/CLI 코드)를 C#으로 변환할 수 있습니다.그렇지 않은 경우 - 즉소스에 네이티브 코드가 포함되어 있는 경우 .NET Reflector와 같은 도구는 코드를 번역할 수 없습니다.

네이티브 C++ 코드가 혼합되어 있는 경우 네이티브 코드를 별도의 DLL로 옮기고, DLL 함수에 대한 호출을 쉽게 식별할 수 있는 스텁 함수로 바꾸고, 프로젝트를 순수 .NET 라이브러리로 컴파일한 다음 다음을 사용하는 것이 좋습니다. .NET 리플렉터를 사용하여 C# 코드로 디컴파일합니다.그런 다음 스텁 함수에 대한 호출을 네이티브 DLL에 대한 p-invoke 호출로 바꿀 수 있습니다.

행운을 빌어요!나는 당신을 느낀다!

다른 팁

.NET Managed C++는 열차 사고와 같습니다.하지만 C++ CLI를 살펴보셨나요?나는 Microsoft가 C++를 최고의 .NET 시민으로 만들기 위해 이 분야에서 훌륭한 일을 했다고 생각합니다.

http://msdn.microsoft.com/en-us/magazine/cc163852.aspx

이게 효과가 있을지는 모르겠지만 한번 사용해 보세요 .Net 리플렉터 와 함께 반사방출언어 플러그인.ReelectionEmitLanguage 플러그인은 어셈블리를 C# 코드로 변환한다고 주장합니다.

2004년까지 Microsoft에는 관리되는 C++를 C++/CLI로 변환하는 도구가 있었습니다.일종의.우리는 이를 두 개의 프로젝트에서 실행했지만 솔직히 말해서 프로젝트를 정리하는 데 남은 작업량은 처음에 수동으로 변환을 수행하는 데 필요한 작업량만큼 적지 않았습니다.하지만 이 도구가 공개 릴리스로 출시된 적은 없다고 생각합니다(아마도 이런 이유 때문일 것입니다).

어떤 버전의 Visual Studio를 사용하고 있는지 모르겠지만 /clr:oldSyntax 스위치를 사용하여 Visual Studio 2005/2008로 컴파일되지 않는 C++ 코드를 관리했으며 여전히 이에 대한 VS 2003의 유물이 있습니다.

유용한 방법으로 C++에서 C#으로 전환하는 방법을 모르겠습니다.반사경을 통해 왕복을 시도해 볼 수 있습니다 :)

C#은 실제로 작업에 적합한 옵션이 아니기 때문에 이러한 프로젝트는 c++/cli에서 수행되는 경우가 많습니다.예를 들어일부 기본 C++ 라이브러리와 인터페이스해야 하거나 낮은 수준의 C에서 매우 높은 성능을 수행해야 하는 경우.따라서 c++/cli를 선택한 사람이 전환을 수행하기 전에 이를 수행할 타당한 이유가 없는지 확인하십시오.

그럼에도 불구하고 나는 모든 C++/cli 코드가 C#으로 변환될 수는 없으며(아마도 그 반대일 수도 있음) 간단한 이유 때문에 귀하가 요청한 것을 수행하는 것이 있는지 매우 회의적입니다.

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