2011-09-20 5 views
10

C#에서 소비 할 수있는 C++ WinRT 구성 요소를 만들 수 있다고합니다. 간단한 테스트 프로젝트 - C# XAML 앱과 기본 WinRT 구성 요소 프로젝트 템플릿 만 사용하는 C++ 프로젝트가 있습니다. C# XAML 프로젝트에 프로젝트 참조를 추가하려고하면 참조를 추가 할 수 없다고 표시됩니다 (이유를 모르겠습니다). 네이티브 WinRT 구성 요소를 빌드하고 .winmd 파일이 생성되고 참조 추가 대화 상자의 찾아보기 단추를 사용하여이 .winmd 파일에 수동으로 참조를 추가 할 수 있습니다. 이 방법으로 네이티브 라이브러리의 메서드에 액세스 할 수 있지만 빌드 할 때 Platform.IDisposable을 사용하고 있지만 해당 형식은 참조되지 않은 어셈블리에 정의되어 있다고 표시됩니다. 세션 중 어떤 것도이 시나리오를 시연하지 못했습니다.관리되는 프로젝트에서 원시 WinRT 구성 요소를 참조하는 방법은 무엇입니까?

답변

2

참조하는 C++ WinRT 어셈블리는 아마도 IDisposable 인터페이스를 구현하는 개체를 사용하므로 인터페이스가 포함 된 C++ 어셈블리를 참조해야합니다.

+0

어떤 C++ 어셈블리입니까? WinRT의 모든 핵심 어셈블리는 이미 자동으로 참조됩니다. 선택할 표준 대화 상자에는 추가 표준 어셈블리가 없습니다. –

+3

@ 제레미 .NET App에 'Microsoft.VCLibs'에 대한 참조를 추가하여'Platform.IDisposable'을 해결해야 할 필요가있는 것 같습니다 (한 쪽 메모에서 'System.IDisposable ', 그러나 그것은 일어나지 않습니다 ...). 그러나이를 참조로 추가하면 배포 할 때 문제가 발생할 수 있습니다. 아마 Dev 미리보기 기발한. –

+0

그래, 나는 Microsoft.VCLibs를 발견하고 그것을 시도하고 그것이 정의 된 곳인 것처럼 보이지만 배치 할 때도 오류가 발생한다. 패키징 작업을 조사해야 할 것입니다. VCLibs는 패키지에 포함되어야합니다. 이 일을 할 수있는 사람은 누구입니까? –

2

그래서 Microsoft.VCLibs에 대한 참조를 추가 한 후에 유사한 문제가 발생하여 배포 할 수 없었습니다. 그러나 나는 C# Metro 스타일 앱이 모든 CPU를 대상으로하는 반면 기본적으로 WinRT 구성 요소는 x86 코드로 컴파일된다는 것을 알았지 만 이것이 내 경우의 근본 원인이었습니다. C# 응용 프로그램을 x86으로 전환하면 문제가 해결되었습니다.

관련 문제