سؤال

أود أن أعرف ما إذا كانت هناك بعض الحلول الجيدة للتعامل مع الأنواع المعقدة التي لا يمكن استيرادها في IDL. شاغلي الأكبر هو استخدام أنواع المتجهات _M128 للحصول على تعليمات simmed أي. XMVector. لم يتم التعرف على __declspec بواسطة برنامج التحويل البرمجي MidL ، لذا فإن استيراد نوع بيانات __M128 أمر غير وارد. بحثت في استخدام Wire_marshal للقيام بذلك ، لكنني أعتقد أنه يجب أن يكون على دراية بنوع __M128. إذا كانت هناك طريقة يمكنني أن أحققها Foreword_Declare XMVector لاستخدامها مع Wire_marshal ، فأنا لم أكن أشد على كيفية القيام بذلك.

لقد فكرت في إخفاء النوع من خلال تغليفه والذي سيكون بالفعل هو أنني أقوم بتغليف أنواع البيانات للانعكاس. لقد لعبت مع بعض الأفكار هنا بما في ذلك الوراثة من كل من واجهات COM و C ++. لا شيء هنا بدا واعدا للغاية.

لقد أخبرني الكثير من الناس بعدم استخدام COM وأنا بصراحة قضيت ساعات كبيرة في عدم الترميز وأحاول فقط معرفة هذه الأشياء. يستمر منطقتي في رؤية الكثير من الفوائد لاستخدام COM والبدائل بما في ذلك MyCom يبدو أنها تستغرق وقتًا طويلاً ومليئة بالمشاكل. إذا كانت هذه هي مشكلتي الأكبر في استخدام COM ، فهل يجب أن أستمر في تحريك المقدمة أم أن الحلول ستبطئ هذا التطبيق ، مع الأخذ في الاعتبار اعتمادها على العرض الرسومي والنمذجة الحاسوبية في الوقت الحقيقي؟ أنا أتطلع إلى القيام بأشياء على نطاق مزارع أو غيوم أو شيء من هذا القبيل ... أتحدث بشكل كبير وأنا أعلم أنني لا ، من فضلك ، لا أحاول أن تثير الإعجاب فقط لأصبح على علم ... لقد فعلت الكثير البحث!

شكرا ، بيكاد:

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

المحلول

يترك القليل من الذوق المضحك في فمي:

typedef XMVECTOR* PTR_XMVECTOR;

typedef struct _ARRAY_XMVECTOR {
        unsigned int size_array;
        [size_is(size_array*SIZE_OF_XMVECTOR)] PTR_XMVECTOR VECTOR_ARRAY;
    } ARRAY_XMVECTOR;

typedef [wire_marshal(MARSHAL_AS)] ARRAY_XMVECTOR MY_VECTOR_ARRAY;

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

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