2011-01-13 4 views
0

Windows Mobile 6.1에서 실행되는 C++ 및 MFC (VS 2008 SP1)로 작성된 응용 프로그램이 있습니다. 이제 타사 공급 업체의 .NET 라이브러리를 통해서만 사용할 수있는이 응용 프로그램에 기능을 통합해야합니다.Windows Mobile 6의 COM Interop

내 생각은 내 프로젝트에 필요한 기능을 노출하고이 어셈블리를 만들기 위해이 .NET 라이브러리 주위에 자체 래퍼/Facade .NET 어셈블리를 만드는 것이 었습니다. COM-visible for my C++/MFC project.

이 래퍼 라이브러리 (C#, "스마트 장치"프로젝트 유형, "클래스 라이브러리", 대상 프레임 워크 .NET 2.0 또는 3.5), 대상 플랫폼 "Windows Mobile 6 Professional SDK ") 프로젝트 등록 정보 의 COM-Interop을 COM-Interop에 등록하도록 만드는 옵션은 (VS의 대화 상자 마스크에 회색으로 표시됨)이 입니다.

질문 (내가 (안 프레임 워크 2.0 옵션을 사용할 수 있습니다에 대한 클래스 라이브러리 프로젝트) 스마트 장치에 대한 "정상적인"를 만들 때.) :

  • 1) COM-상호 운용성됩니다에 대한 지원 Windows Mobile은 전혀?
  • 2) 그렇다면 Windows Mobile에서 지원되는이 COM-Interop의 특별한 방향이 필요합니까? (네이티브 응용 프로그램에서 COM 어셈블리를 볼 수 있습니까?)
  • 3) 그렇다면 프로젝트를 설정하여 문제가 있습니까?
  • 4) 위의 첫 번째 단락에서 설명한 문제를 해결하기위한 다른 옵션이 있습니까?

미리 도움을 주셔서 감사합니다.

+0

여기서 무슨 일이 일어나고 있는지 확실하지는 않지만 [ComVisible] 속성은 CF에서 지원됩니다. 'Register for COM interop'이 비활성화 된 것은 많은 의미를 지니 며, 개발자 컴퓨터가 아니라 장치에서 수행되어야합니다. CF에 필요한 Regasm.exe 도구가 있는지 확인하십시오. –

+0

예, [ComVisible]이 지원된다는 MSDN을 보았습니다. 또한 내 프로젝트의 AssemblyInfo.cs에서 ComVisible을 true로 설정하고 오류없이 컴파일 할 수 있습니다. 혼란 스럽네. 이 기사 (http://msdn.microsoft.com/en-us/library/kfzsfkz3%28v=VS.90%29.aspx)에서는 "Regasm.exe와 같은 어셈블리 등록 도구를 사용하여 COM 클라이언트에서 관리되는 구성 요소를 COM 클래스로 사용하십시오 [CF에서는 지원되지 않습니다] "- 지원되지 않는 기능 중에서도 ctacke의 대답을 아래에서 확인했습니다. – Slauma

답변

1

호스팅에서 지원되지 않으므로 CF에서 관리되는 COM 개체를 만들 수 없습니다.

네이티브 (관리되는 쪽에서 시작된 콜백 제외)에서 관리되는 코드로 호출하는 유일한 방법은 자체 프로세스에서 실행되는 별도의 관리되는 실행 파일을 만들고 IPC를 사용하는 것입니다.

+0

명확한 답변을 보내 주셔서 감사합니다! 또 다른 질문에 대한 답을 찾았습니다. http://stackoverflow.com/questions/200225/easy-ipc-on-windows-mobile. 그래서 어떤 종류의 IPC가 권장되는지에 대한 힌트를 묻는 것은 이제 불필요합니다. 다시 한 번 감사드립니다! – Slauma