2014-12-01 2 views
1

OS가 WinCE 6.0 인 임베디드 장치가 있습니다. 제조업체는 타사 개발을위한 IDE를 제공합니다. IDE는 거의 장치에 파일을 추가 주요 응용 프로그램 Win Embedded CE 6.0의 미디어 기능 확장

  • 에서 다양한 이벤트에서 호출 것

    • .NET 3.5 Compact Framework에서 스크립팅 이상 아무 것도 할 수 없습니다.

    포함 된 미디어 플레이어는 DirectShow를 사용하는 것 같으며 OS에는 mpeg-1 인코딩 된 비디오 재생 전용 미디어 코덱이 있습니다. 내 목표는 다른 주요 코덱으로 인코딩 된 미디어도 재생할 수있게하는 것입니다.은 메인 애플리케이션 내에 있습니다.

    저는 이미 DirectShowNETCF (.NET Compact Framework 용 DirectShow 래퍼)를 사용하고 mpeg-1 인코딩 된 비디오를 성공적으로 재생했습니다.

    나는이 재료로 완전히 새롭고 나는 (어리 석다) 수많은 질문을 가지고있다.

    • OS가 주춤 기반으로하지만 지금까지 내가 이해 한, 그것은 (플랫폼 빌더를 통해) 그 중 일부 사용자 정의 버전은 실제로 항상 : 나는 그들을 좁혀하려고합니다. 이후에 개발할 "올바른 방법"만이 제조업체가 일반적으로 제공하는 SDK를 사용하는 것입니다. 권리? 필자의 경우 SDK는 위에 언급 한 것처럼 매우 제한적이며 IDE에 단단히 통합되어 있습니다. 그러나 .NET CF 3.5는 interop에 사용할 수 있으므로 올바른 플랫폼 용으로 컴파일되는 한 기본 라이브러리를 호출 할 수 있습니다.

    • 컴파일 된 코드는 프로세서 (어셈블러 코드)에 대한 지침이며 컴파일러는 대상 프로세서 설정에 따라 올바른 지침을 선택합니다. 또한 프로그램이 실행될 플랫폼을 정의하는 PE 헤더가 있습니다. "helloworld.exe"(특정 종료 코드를 반환하지만)를 x86으로 대상으로하고 VC로 컴파일하면 작동합니까?

    • 실제로 PE 헤더가 문제가있는 경우 SDK없이 WINCE를 설정할 수 있습니까? 기본 형식 만 사용하는 간단한 실행 파일을 만들려면 전체 SDK가 정말로 필요합니까? VS2010은 더 이상 스마트 장치 개발자를 지원하지 않으며 테스트 목적으로 다운 그레이드하는 것을 싫어합니다.

    • 위의 질문은 내 생각에 prequel입니다 : WinCE 용 ffmpeg/ffdshow 포팅. 실제로는 이미 exists이지만 Intel Atom을 대상으로하지도 지어 지지도 않았습니다. 코멘트?

    • 네이티브 구현이 가능하지 않고 C#으로 일부 특정 코덱을 구현하게되면 결국 꽤 큰 작업이 될 것입니다. 하지만 C#을 네이티브보다 많이 선택해야 할 경우 코덱 성능에 문제가 발생할 수 있습니까? 내 말은 .. C#은 훨씬 느린거야?

    고맙습니다.

  • 답변

    1

    나는 자신의 IDE를 제공 한 OEM을 보지 못했지만 확실히 가능합니다. 그러나 앱을 만들 수있는 방법은 변경되지 않아야합니다. IDE 작업에서 나온 것만을 확인하기 위해 많은 작업을 수행했을 수도 있지만 많은 이익이 아닌 심각한 양의 작업이 될 수 있으므로 가능성은 희박합니다.특정 질문에 대해서는

    :

    • 운영 체제 하지 그것을 "에 따라" 윈도우 CE이다. 그러나 OS는 구성 요소이므로 모든 조각을 사용할 수있는 것은 아닙니다. SDK는 일반적으로 사용할 수없는 것을 필터링하는 메커니즘을 제공합니다. 실제로 올바른 프로세서 아키텍처를 목표로하는 SDK를 사용할 수는 있지만 앱에서 라이브러리에 OS가 아닌 것을 요청하면 오류가 발생합니다. 관리 코드의 경우 CF가 구성 요소 화되지 않았기 때문에 이는 모두 관련이 없습니다. 거기에 있으면 CF 응용 프로그램을 실행할 수 있습니다 (그렇지 않은 경우 사실 이후에 설치할 수 있습니다). 즉, 플랫폼이 CF를 지원하면 CF 응용 프로그램을 작성하여 실행할 수 있습니다. 그 응용 프로그램은 P/Invoke를 통해 기본 기능을 호출 할 수 있습니다 (물론 OS 개발자가이를 방지하기 위해 보안 기능을 추가하기로 결정한 경우는 예외입니다.이 기능은 구현 된 적이 없지만 OS에서 가능합니다).
    • 예, 컴파일 된 코드는 단지 "지침"입니다. 네이티브의 경우 프로세서 지시 사항입니다. 관리되는 경우 관리되는 런타임이 JIT 시간에 프로세서 지침으로 변환되는 MSIL 지침입니다. 대상이 ARM 플랫폼 인 경우 x86 컴파일러를 사용할 수 없습니다. 대체로 말하자면 Windows CE를 지원하는 올바른 Microsoft 컴파일러를 사용해야하고 적절한 스위치로 컴파일러를 호출하여 프로세서 아키텍처뿐만 아니라 대상 OS에도 알려야합니다. 왜냐하면 수행해야 할 연결이 달라지기 때문입니다 OS 레벨 API 및 심지어 C 런타임에도 사용할 수 있습니다. 이것의 부족한 점은 플랫폼에 따라 Visual Studio 2008 Pro를 사용해야한다는 것입니다.
    • 기본 응용 프로그램의 경우 동일한 OS 버전 (CE 6.0) 및 프로세서 아키텍처 (예 : ARMv4I)를 대상으로하는 SDK가 필요합니다. OS 기능 집합과 일치시키는 것도 유용하지만 요구 사항은 아닙니다. 관리 코드는 프로세서 종속적이지 않기 때문에 Studio와 함께 제공되는 SDK 만 사용할 수 있습니다. 2010 년에는 WinCE 컴파일러가 없기 때문에 Studio 2008로 돌아 가야합니다.
    • 기존 라이브러리를 찾은 경우 라이브러리를 사용하려고 할 수 있습니다. 진행 상황을 저해 할 수있는 일은 A) 가지고있는 SDK를 사용하기는 쉽지 않으므로 새 프로젝트 파일 (고통 스럽지만 실행 가능)을 만들어야하고 B) OS에서 사용할 수없는 기능을 사용한다면 그것들을 해결할 수 있습니다. OS 기능이 없다면 이미 운이 나갔을 것입니다. 이미 미디어 플레이어와 코덱이 있다면 괜찮을 것입니다.
    • 관리 코드에 구현하지 마십시오. 진심으로, 그냥하지 마. 너? 예. 성능은 아마 거의 동일하게 만들어 질 수 있습니다. 단, GC를 망가 뜨리는 것을 피하려면 기본적으로 자신 만의 메모리 관리자를 만들어야합니다. 이 경로에 관련된 작업량은 매우 큽니다.
    +0

    대단히 감사합니다! 명확한 설명을 위해 : 장치에 Intel Atom 프로세서 (x86- 아키텍처)가 있으므로 표준 VC 컴파일러를 여전히 사용할 수 있습니까? 나는 참조 된 모든 라이브러리를 하나씩 줄이고 모든 native code를 성공적으로 빌드하기 위해서는 적어도 kernel.lib가 제공되어야한다는 것을 알아 차렸다. 그 CE 버전을 참조하는 것이 가능할까요? (.. VS2008 .. 피하기 위해 노력) –

    +0

    Aw sh -... 참조 된 libs 잊어 버려. 꽤 많은 의존성 등이있을 것 같습니다 그래서 VS2008 내 유일한 선택 같아요. 그러나 기대되는 목적을 위해서, 이론적으로는 대상 OS에 관계없이 x86 아키텍처 용 x86 컴파일러를 사용할 수 있습니까? –

    +0

    이론적으로는 그렇게 생각합니다. 그것은 모든 런타임 및 장치 컴파일러 함께 제공되는 libs 필요합니다, 그래서 당신은 여전히 ​​VS '08 그들을 설치하려면, 다음 모든 적절한 스위치를 사용하여 대체 컴파일러를 사용하여 코드를 어셈블 및 링크 . 그렇게 재미 있지 않을 것입니다. – ctacke

    관련 문제