2014-03-04 2 views
8

C++과 C# 사이에 래퍼를 만들어야합니다.C# enum을 C#에서 마샬링하는 방법

virtual SOMEINTERFACE* MethodName(ATTRIBUTE_TYPE attribType = ATTRIBUTE_TYPE::ATTRIB_STANDARD) = 0; 

enum 다음과 같이 선언한다 :

enum class ATTRIBUTE_TYPE { 
    ATTRIB_STANDARD, 
    ATTRIB_LENGTH 
}; 

가 어떻게 그 ATTRIBUTE_TYPE 열거 포장 않습니다 나는이 매우 유사한 기능을 가지고?

+0

'ATTRIBUTE_TYPE'의 기본 유형은 무엇입니까? – Mgetz

+0

간단한 enum : enum 클래스 ATTRIBUTE_TYPE { ATTRIB_STANDARD, ATTRIB_LENGTH }; – Rock3rRullz

+3

에서 C# 및 C++의 열거 형을 지정하면 (그리고 그것들도 동일합니다) P/Invoke에서 직접 열거 형을 사용할 수 있어야합니다. 이름을 공유하는 모든 C++ 및 C# 유형이 동일하지는 않습니다. C#에서는'long'이 int64이지만 C++에서는 int32입니다. – Mgetz

답변

8

귀하의 C++ 열거는 다음과 같이 정의된다 : 기본적으로

enum class ATTRIBUTE_TYPE { 
    ATTRIB_STANDARD, 
    ATTRIB_LENGTH 
}; 

enum class 유형 크기 int이다. 즉 다음과 같이 C#으로 변환 할 수 있습니다.

enum ATTRIBUTE_TYPE { 
    ATTRIB_STANDARD, 
    ATTRIB_LENGTH 
}; 

그게 전부입니다. C# 열거 형은 blittable이며이 C# 열거 형은 C++ 열거 형에 정확히 매핑됩니다.

+1

나를 명확히 해 주셔서 감사합니다. – Rock3rRullz

관련 문제