سؤال

لدي DLL المصنوع في C #، يحتوي هذا DLL على بعض Clases مثل الخالق.

أحتاج إلى تحميل DLL واستخدام Creator Class في C ++ غير المدارة،

فهل هناك طريقة لإنشاء هذه الحالة أو يجب أن أحمل الوظائف التي تعرضت فقط؟

انا اريد شئ ما مثل هذا:


CreatorInstance->Init();

هل هذا هو مسح

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

المحلول

نهج جون فيشر باستخدام C ++ / CLI هو أسهل وسيلة للتعامل مع هذا، لكنها ليست هي الوسيلة الوحيدة.

الخيارات الثلاثة الأخرى هي:

1) استخدم com interop لفئة .NET VIA COM

2) يمكنك استضافة CLR في تطبيقك الأصلي والمغار، والاتصال به. للحصول على التفاصيل، انظر هذه المقالة.

3) يمكنك استضافة وقت تشغيل أحادي، واستخدامه للاتصال برمزك المدار. للحصول على التفاصيل حول هذا، انظر هذه الصفحة.

الخيار 2 و 3 متشابه للغاية، ولكن IMO، 3 أسهل من 2.

نصائح أخرى

معظم ما تحتاجه يمكن العثور عليه هنا: http://msdn.microsoft.com/en-us/library/x0w2664k٪28VS.80٪29.aspx.

في المقام الأول، تحتاج إلى التعلم عن مفتاح / CLR لتجميع C ++. ثم تحتاج إلى فهم ملحقات C ++ التي تضاف Microsoft للسماح بتجميعات مختلطة. (سيكون مؤشر C ++ "إلى فئة مدارة استخدام P ^ بدلا من P *، وهلم جرا.)

إليك مقالة مثيرة للاهتمام حول كيفية أن تكون قادرا على تحقيق ذلك دون استخدام خيار / CLR

http://www.codeproject.com/kb/cs/managedcom.aspx.

يعمل بشكل جيد للغاية.

بادئ ذي بدء، من الممكن وأنت لا "لديك" لاستخدام CLI أو مفتاح / CLR. باستخدام هندسة COM القديمة الجيدة يمكنك القيام بذلك بسهولة http://msdn.microsoft.com/en-us/library/zsfw439.aspx.. وبعد فهم قد يكون Way Com Works هو التحدي الأكبر هنا، لكنه مفيد بمجرد معرفة ذلك.

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