2013-08-01 4 views
2

Managed C++ 프로젝트를 C#으로 변환했습니다. C++ 프로젝트에는 프로젝트 외부에있는 외부 종속성 인 상수 C++ 헤더 파일이 포함되어 있습니다.C# 헤더 파일을 C# 파일에 포함합니다.

새로 만든 C# 파일에이 C++ 헤더 파일을 포함 할 수있는 방법이 있습니까? 클라이언트에 의한 변경이 C++ 헤더 파일에서 일어나기 때문에 C# 파일에서 이러한 상수를 재정의하고 싶지 않습니다.

+0

아마도 가능하지 않습니다. 이 헤더 파일을 사용하고 C# 솔루션을 빌드 할 때 필요한 C# 소스 파일을 생성하는 도구를 작성할 수도 있습니다. –

+0

C# 파일과 관리되지 않는 C++ 코드간에 상수를 공유해야하는 일부 코드에 대해 C++ 파일이 변경되었을 때 C# 파일을 업데이트하기 위해 미리 빌드 작업을 수행하기 위해 사용자 지정 유틸리티를 작성했습니다. 잘됐다. – pstrjds

+1

@ JoachimPileborg :이 도구는 SWIG라고합니다.) –

답변

3

포함 할 수 없습니다.

당신은 정말

  • 가 관리 레이어를 복제하고, C++ 헤더와 동기화에 그것을 유지하는 2 가지 옵션이 있습니다.
  • 런타임에이를 읽고 구문 분석하고 이러한 기호가 필요한 C# 부분에서 리플렉션을 사용합니다.

다른 사람이 언급했듯이 첫 번째 자동화는 가능합니다. 당신은 헤더 파일의 엄청난 금액이있는 경우

+0

C++ 헤더와 어떻게 동기화합니까? 수동? –

+1

아마도 헤더 파일을 읽고 원하는 선언이 포함 된 C# 파일을 내보내는 간단한 도구를 스크립팅 할 것입니다. –

+0

@jay_t - David Heffernan의 코멘트를 참조하십시오. – SteveLove

0

C# 컴파일러가 .h 파일을 어떻게 처리하는지 이해하지 못하기 때문에 불행히도 그럴 수 없습니다. 심지어 그렇다고해도 .NET에서 변수 범위를 벗어나는 선언 (상수 또는 다름)을 사용하는 것은 여전히 ​​불법입니다.

파일을 직접 변환하거나 Joachim Pileborg의 설명에서 언급 한 것처럼 파일을 C# 코드로 자동 변환하는 유틸리티를 빌드하십시오.

2

, 당신은 꿀꺽 꿀꺽에서 좀 걸릴 수 있습니다 : http://www.swig.org/

이 C/C++ 헤더 파일에서 C#을 파일을 생성합니다. 더 많은 정보를 들어

도 참조 : http://www.swig.org/Doc2.0/SWIGDocumentation.html#CSharp

결과는 매우 인상적이다! 그러나 C# 스타일보다 C++과 같은 이름이 ... 그러나 이것은 예상 된 것입니다 ...

관련 문제