2013-11-03 2 views
1

에서 참조 할 수 없습니다. 현재 발생한 문제는 실제로 이상합니다. C# 프로젝트에서 Managed C++ 클래스를 사용하려고 시도하지만 컴파일러가 해당 유형을 찾을 수 없습니다.관리되는 C++ 클래스는 C#

이 스크린 샷에서보세요 : Problem Screenshot

관리되는 C++ 프로젝트 (NGervill.Gervill.Native) 는 참조하고 필요한 모든 네임 스페이스와 유형이 포함 개체 브라우저에 따라한다. 내 소스 코드에서 사용하여 추가하고 클래스를 사용하지만 여전히 컴파일 오류가 발생합니다.

가장 이상한 부분 : Managed C++ 프로젝트의 다른 유형을 참조 할 수 있습니다. 다른 C# 클래스에서는 PortMixerProviderNative 클래스의 메서드에 액세스합니다. 이는 타겟 플랫폼과 .net 프레임 워크 버전이 정확하다는 것을 의미합니다 (.net 4.5 - x86 빌드).

Visual Studio에서 Managed C++ DLL의 이전 버전을 어떻게 든 캐싱하고 있습니까? 아니면 다른 문제가 발생할 수 있습니까?

답변

0

마지막으로이 문제의 해결책을 발견했습니다. 어떤 이유로 PortMixerNative 클래스를 구현하는 cpp 파일이 프로젝트에 포함되지 않았습니다. PortMixerNative.cpp를 프로젝트에 다시 추가 한 후에는이 파일에 구문 오류가 있음을 알 수있었습니다. 오류를 수정하고 .Native 프로젝트를 다시 컴파일 한 후에 클래스를 성공적으로 참조 할 수있었습니다.

. 이상한 점은 .Native 프로젝트가 구현되지 않은 메서드로도 성공적으로 컴파일된다는 것입니다. 아무도이 문제가 발생하면 사용하려고하는 클래스의 모든 메소드가 구현되어 있는지 확인하십시오.

1

PortMixerNative는 관리되는 클래스가 아닌 기본 C++ 클래스입니다. 네이티브 클래스는 경우에 따라 관리되는 클래스 래퍼의 비공개 필드 형식이기 때문에 어셈블리 메타 데이터에 노출 될 수 있지만 C# 프로그램에서는 사용할 수 없습니다. C++/CLI 프로젝트의 public ref class 선언 만 사용할 수 있습니다.

어떤 래퍼 클래스를 사용해야하는지 명확하지 않습니다. PortMixerNative가 아닙니다. 더 많은 도움이 필요하면 공급 업체의 설명서 및/또는 코드 샘플을 확인하거나 연락하십시오.

+0

PortMixerNative 클래스는 관리되는 클래스입니다. ('public ref class PortMixerNative'로 선언 됨). 나는이 라이브러리의 공급 업체이고 PortMixerNative는 내가 사용할 래퍼입니다. – Danielku15

+0

이 클래스에 대한 몇 가지 코드를 보여 주면 스크린 샷이 엉망이됩니다. –

관련 문제