كيفية استخدام القائمة رمز C++ في .NET (C#)
-
22-07-2019 - |
سؤال
وأود أن إنشاء مشروع C# وتنفيذ القائمة الأصلية (C++) رمز.لا أحد يعرف عن أي تعليمي جيد حيال ذلك ؟
وذلك بفضل!
نصائح أخرى
إذا تدار بك C ++ كود (كما تقول)، ثم كنت أقترح عليك أن ترك الأمر كما C ++ <م> إلا م> لديك سبب وجيه جدا ل- المجالس المستقبل C # (الخ) يجب أن تكون قادرة على مجرد مرجع له "كما هي".
افترض تنفيذ التعليمات البرمجية الموجودة هل تقصد أنك تريد أن نسميها من C#, مع الحد الأدنى من التغييرات رمز C++.
أنا من محبي الأخيرة المشتري من الكتاب C++/CLI في العمل التي لديها زوجان من المفيد فصول عينة على الانترنت.
هذا مقدمة على CodeProject هو نقطة انطلاق جيدة.
المؤلف من C++/CLI في العمل لديها عدد من المقالات حول CodeProject ، انتقل لأسفل إلى C++/CLI القسم على له مؤشر.
على مقالة ويكيبيديا على P/الاحتجاج له عدد من الأسباب لماذا قد لا ترغب في استخدام هذا النهج ، والذي أتفق معه:
- فقدان الكتابة الدعم من قبل المترجم
- ممكن نوع البيانات أو محاذاة القضايا لديك خريطة أنواع باليد
- تحتاج إلى دبوس القمامة التي تم جمعها الكائنات
أفضل نقطة انطلاق MSDN هو ملخص المادة.
لماذا لا تحاول مغلفة المدارة لالتعليمات البرمجية C ++.
وربما كان أسهل طريقة للقيام بذلك هي لإنشاء مشروع ++ / CLI C، والتي سوف تمكنك من مزيج المدارة وغير المدارة C ++. يمكنك ثم لف الموجودة لديك غير المدارة C ++ الطبقات مع مجمع صافي المدارة التي لديك C # رمز يمكن استدعاء مباشرة. مجلة MSDN لديها المقالة على C ++ / CLI.
وإمكانية التشغيل المتداخل لن يكون إلا حقا مفيدة لاستدعاء وظائف على غرار C. لا يمكنك حقا استخدامه للتفاعل مع الطبقات نقية C ++.
وتعلمت هذا من خلال القيام بذلك، ولذا فإنني لم يكن لديك تعليمي جيد، ولكن هناك بضعة أشياء تحتاج إلى أن يكون على علم - تمكنت C ++ و C ++ / CLI على حد سواء تتكامل مع التعليمات البرمجية غير المدارة مع عدد قليل جدا من طبقات قبيحة. هذا ليس هو الحال مع C #. في إدارتها C ++، فمن الممكن جدا أن تفعل شيئا من هذا القبيل:
dotNetForm->Text = S"My Project"; // regular managed code
::SetWindowText(dotNetForm->Handle, "Your Project"); // mixed managed/unmanaged
وأما في C # عملتم لP / استدعاء إلى SetWindowText - وليس ان كنت حقا أن: انها مجرد مثال بسيط، ولكن عليك أن تدرك أن المجمع تمكن C ++ هو مزيج غريب من القيام بالكثير من إمكانية التشغيل المتداخل لك بشفافية وعدم القيام بأي شيء بالنسبة لك في الوقت نفسه (أي انها لن تفعل أي marashalling ضمنيا).