الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استخدام كود ++c ضمن #c

بدأه blade88 في 9 نوفمبر 2011 · 3 رد · 461 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الســـلام عليكم

لدي مشكلة في استخدام الكود الذي كتبته باستخدام ++C و اريد استخدام هذا الكود في #C

كود الــ ++C هو كود بسيط عبارة عن ملف cpp يحتوي كلاس ضمنه اسنخدام للمؤشرات

الطريقة التي اتبعها و هي توليد dll من مشروع الــ ++c

ولكن عند محاولتي استخدام dll ضمن مشروع الــ #C يظهر لدي الخطأ التالي :

A reference xxx.dll couldn't be added .please make sure that the file is accessible and that it is a valid assemblyor COM component

وذلك باستخدام visual studio 2008

ارجو مساعدتي في حل المشكلة أو اذا كان هناك طريقة اخرى لعمل ذلك

#2

السلام عليكم ورحمه الله وبركاته

اخي قم باضافة الملف من Add Reference طبعا اذا كان كوده Managed, والا فحاول استخدام الامر regsvr32

تم تعديل هذه المشاركة بواسطة VB Helper في 9 نوفمبر 2011 في 17:02

.:: Wish to become better and better ::.

#3

يمكن وضع dll في مجلد bin

بعد ذلك أستخدم كود إستدعاء native code with DllImport

[System.Runtime.InteropServices.DllImport("your dll name")]
        static extern returnType FunctionNameInDll(parametertype parametername);

your dll name = dllname.dll

FunctionNameInDll هو أسم نفس الـ Function في dll

returnType حسب نوع Type المرتجع من ال Function عندك في msdn

data type native مقابل data type in framework

نفس الكلام مع parametertype

مثلا

  [System.Runtime.InteropServices.DllImport("user32.dll")]
        public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);

طبعاً انا هنا بستخد user32.dll وهى موجودة داخل ملفات الويندوز

بستدعى function بداخلها اسمه GetWindowText ممكن تشوفه في msdn و شكل datatype ال return وال parameter

وهى مسئولة عن استرجاع اسم اى شاشة

طريقة استخدام الكود

اكتب تحت اى زرار

StringBuilder sb = new StringBuilder(250);
            int lengthText = GetWindowText(this.Handle, sb, 250);
            MessageBox.Show(sb.ToString());

الكود دا هيرجع اسم الفورمة الحالية

#4

شكراً لكم

المشكلة كانت اني اعمل instance في c# project من class معرف ضمن c++ code

كانت رسالة الخطأ classname is inaccessible due to its protection level

لقيت الحل اني اكتب C++/CLI class

http://stackoverflow.com/questions/7353254/having-a-dll-with-c-class-thats-constructor-takes-in-other-c-class-how-to-m

مواضيع مشابهة