سؤال

أحاول معرفة كيفية إضافة بعض إمكانيات Directshow إلى تطبيق C# (.NET CF 3.5 يعمل على الهاتف المحمول 6 وما فوق) ، وأواجه صعوبة في معرفة كيفية سد الفجوة بين استخدام فئة C ++ غير المُدارة (ES) في المدار C#.

لقد كتبت بالفعل الوظيفة التي أحتاجها في C ++: في الأساس ، لدي فئة مدير يستخدم COM للاستفادة من وظيفة DirectShow المطلوبة. إخلاء سريع: أنا جديد على COM ، وأنا جديد جدًا في دمج C ++ مع C#.

آمل حقًا أن يقترح شخص ما على دراية استراتيجية أساسية بالنسبة لي لمزيد من البحث. إليكم بعض ما بحثت فيه ، والمشاكل التي وجدتها معهم:

  1. قم بإنشاء DLL C ++ ، ثم اتصل به من C#.
    المشكلة: نظرًا لأنني أعمل على منصة أجهزة ذكية ، فإن إنشاء C ++ DLL المدارة ليس خيارًا ، لذلك لن يتمكن C# للأسف من الاتصال مباشرة في C ++ DLL. هل إنشاء مثيل لفصل C ++ "DSHOW Manager" الخاص بي من C# (عبر com) هو الخيار الأفضل؟

  2. قم بإنشاء C ++ DLL ، ثم فقط Pinvoke/Dllimport الطرق المطلوبة.
    المشكلة: يحتوي الحل الخاص بي على مستمع أحداث وأشياء ، لذلك أحتاج إلى الحفاظ على مثيل لفئة المدير (انظر الخيار 3) ، وليس فقط الاتصال في الأساليب الفردية.

  3. قم بتكرار فئة C ++ في C#، ثم فقط اتصل بطرق DSHow عبر com من C#.المشكلة: يبدو هذا هو الخيار الأفضل بالنسبة لي ، ولكن من ما وجدته هنا MSDN, ، أحتاج أولاً إلى "إنشاء تعريفات مُدارة لواجهات وأنواع COM" ، وللأسف لا يمكنني العثور على ملفات TLB المباشرة للاستيراد عبر tlbimp.exe. كل ما يعطيني WM6 SDK هو dshow libs ، pdbs ، و exps. لا يمكنني حتى العثور على ملفات IDL لإنشاء TLBs من ، كما اقترحت بعض المواقع.

كما هو الحال ، ما زلت أبحث في الأشياء ، لكن نوعًا ما عالقًا الآن. أي اقتراحات؟ شكرا مقدما!

هل كانت مفيدة؟

المحلول

ربما يمكنك النظر إلى مكتبة سطح المكتب dshow.net كدليل للنقل. أليكس موغورنكو مدونة حديثة على تشغيل الصوت والفيديو مع DSHow على Winmo هو أيضا مورد جيد.

تحرير: أعتقد أنني لم أجيب مباشرة على السؤال على الإستراتيجية. نعم ، #3 هو الطريق للذهاب. لف dshow واسمه ، لا تضيف طبقة أخرى من عدم التوجيه المربكة (com مربكة بما فيه الكفاية بالفعل).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top