2010-07-11 2 views
2

C++/CLI에서 인터페이스를 선언하고 어셈블리 (DLL)로 만들었습니다. 나는 그 인터페이스가 C# app에 의해 구현되기를 원한다. 참조를 추가했지만 내 C# 어셈블리가 내 C++/CLI 인터페이스를 감지하지 못하고 "찾을 수 없음 : 일부 어셈블리 참조가 누락되었습니다."라고 말합니다.C#에서 C++/CLI 인터페이스를 상속하는 방법?

어떻게 해결할 수 있습니까?

+2

아마도 코드를 게시 할 수 있습니까? – codekaizen

답변

0

interface class이 C++/CLI 어셈블리에서 public으로 선언되어 있는지 확인하십시오. 컴파일 된 어셈블리에서 유형의 가시성을보기위한 무료 버전의 Red Gate .NET Reflector를 권장합니다.

+0

예 C++/CLI 어셈블리에서 모든 것이 public으로 선언되었습니다. 이 인터페이스는 그냥 공용 클래스 인터페이스를 선언하고 모든 네임 스페이스에서 래핑되지 않습니다. 나는 뒤에 래핑했지만 내부에서 선언 된 네임 스페이스와 인터페이스를 인식하지 못하고있다. 이 인터페이스를 C++/CLI 어셈블리에서 성공적으로 사용했지만 C# – Usman

+0

에서 작동 함 .NET Reflector는 C++/CLI 어셈블리 (인터페이스가 선언 된)를 참조로 표시하지 않았습니다. 하지만 C++/CLI 어셈블리 (인터페이스를 구현하는 하나의 어셈블리)는 어셈블리를 참조로 올바르게 표시합니다. .NET 프레임 워크의 이상한 동작. – Usman

+0

인터페이스를 선언 할 때'interface class' 키워드를 사용 했습니까? C#은 관리되는 유형 만 볼 수 있지만 C++/CLI는 관리되는 유형과 기본 유형을 모두보고 사용할 수 있습니다. –

0

인터페이스가 C++/CLI 어셈블리 내의 네임 스페이스 내에 정의되어 있습니까? 그렇다면 C# 파일의 맨 위에 [네임 스페이스]를 사용 하시겠습니까?

+0

같은 오류가 발생했습니다 : "일부 어셈블리 참조가 누락 되었습니까?" 네임 스페이스에 인터페이스를 정의하고 [namespace]를 사용하여 추가하고 참조 어셈블리로 .dll을 포함해도 여전히 해당 인터페이스를 볼 수 없습니다. – Usman

1

dll이 CLR을 지원하는지 확인하십시오. (Visual Studio의 구성 속성에서 일반 탭).

0

아는 것은 오래된 질문이지만 동일한 문제가 있습니다.

IXYprovider.h :

namespace Interfaces { public interface class IXYprovider { ... } }

IXYProvider.cpp :

#include "IXYprovider.h" namespace Interfaces { } 은 또한 당신의 C++/CLI는 (실제로는 거의 비어) 일부 소스 (CPP) 코드를 제공해야합니다

이렇게하면 C#에서 볼 수 있습니다.

관련 문제