إطلاق الحوار C # من غير المدارة C ++ MFC س دلل نشط

StackOverflow https://stackoverflow.com/questions/606270

  •  03-07-2019
  •  | 
  •  

سؤال

ولقد قيل لي لكتابة الحوار في C # التي يجب إنشاء مثيل من غير المدارة ج ++ دلل. ونحن نفعل ذلك في أماكن أخرى في نظامنا ببساطة عن طريق إضافة فئة C ++ تمكنت من المشروع C ++، ثم استدعاء C # دلل من فئة C ++ المدارة. ولكن أنا وجدت أن لا يعمل بالنسبة لي من حيث لا بد لي من القيام بذلك. أعتقد لأن ج ++ دلل هو مشروع MFCActiveX. وسرعان ما وضع CLR على أي ملف في هذا المشروع، وأنه لم يعد تسجيل بشكل صحيح. عندما تحاول تسجيله، وأحصل على ثلاثة أخطاء، ثم رسالة أنه مسجل. ولكن عندما أحاول استخدامه أحصل على 0x80040111 الأحداث "ClassFactory لا يمكن توفير الفئة المطلوبة" خطأ. إذا كان أي شخص لديه أي فكرة ما هي المشكلة هنا أود أن نقدر ذلك. إما أنا بحاجة إلى أن تكون قادرة على تحقيق ذلك (المفضل) أو يثبت أنه غير ممكن.

والشكر

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

المحلول

لا استطيع ان ارى كيف يمكن لمشروع MFCActiveX سوف تمنعك من إنشاء C # الطبقة في هذا السبيل. إلا أنه ببساطة لا يسمح لفئة تمكنت من إضافته.

إذا كنت لا تستطيع الحصول المدارة C ++ الطبقة خدعة للعمل، هناك خيار آخر هو استخدام COM. فمن الممكن لتسجيل مصنع من نوع ما في # مشروع C ككائن COM. يقول اعطائها واجهة التالية

[ComVisible(true)]
[Guid("babe87fc-1467-4913-a1d3-47eeedf1afb5")]
public interface IDialogFactory {
  void Create(); 
}

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

نصائح أخرى

ويجب الآن تسجيله مع "regasm" بدلا من "REGSVR32".

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