2012-07-11 2 views
0

네이티브 코드에서 관리되는 타입을 어떻게 선언해야합니까?C++ 네이티브 코드에서 관리되는 타입을 선언하십시오.

처럼 : 나는 원시 코드에서 Editor.h

의 Ref class Editor (MAIN.CPP)이 있습니다

Editor^ MainEditor; 

을하지만 다음 나에게 제공합니다

MainEditor' : global or static variable may not have managed type 'Cube3D::Editor ^' 

내가했습니다 컨테이너 안에 넣으려고했지만 여전히 선언해야합니다.

답변

1

직접 할 수 없습니다. 문제는 관리 객체가 가비지 컬렉터에 의해 이동되고 순전히 네이티브 코드가이를 처리 할 수 ​​없다는 것입니다.

여기에 허용되는 내용은 다음과 같습니다 관리되는 형식의

  • 회원은 관리 코드를 생성하는 /clr 컴파일해야합니다. 관리되는 코드와 원시 코드로 구현되는 관리되는 유형과 기본 유형을 모두 사용할 수 있습니다.
  • 네이티브 형식 및 네임 스페이스의 멤버는 /clr으로 컴파일하여 관리되는 코드를 생성 할 수 있습니다. 관리되는 코드와 원시 코드로 구현되는 관리되는 유형과 기본 유형을 모두 사용할 수 있습니다.
  • 네이티브 형식 및 네임 스페이스의 멤버는 /clr없이 컴파일하여 네이티브 코드를 생성 할 수 있습니다. 네이티브 형식 만 사용할 수 있지만 사용되는 형식은 관리되는 코드 또는 네이티브 코드로 구현할 수 있습니다.
  • 네이티브 형식의 일부 멤버가 네이티브 코드로 구현되고 동일한 형식의 다른 멤버가 관리 코드로 구현 될 수도 있습니다.

네이티브 코드와 관리되는 유형 사이에 레이어가 있어야합니다.이 중간 레이어는 관리되는 코드로 구현 된 기본 유형입니다.

물론, #pragma managed은 더 세밀한 제어를 위해 /clr과 호환하여 사용할 수 있습니다.

1

오류로 인해 전역 또는 정적 수준에서 관리되는 유형을 사용할 수 없습니다.

메서드 내에서 사용하는 것이 적합하다고 선언했습니다. 네이티브 클래스에 저장하려면 gcroot를 사용하는 것이 좋습니다.

관련 문제