كيف يمكنني تحويل مشروع مكتوب بالسي الى ملف DLL وهذا المشروع مكتوب بداخله عدة دالات مختلفة الأنواع
عندي مشروع مكتوب بالسي و أريد تحويله الى ملف Dll
سوف تضطرين الى اعادة كتابة الدالة main فقط و باقى الدوال كما هى. عليكى فقط البدء بمشروع Dll و اعادة ترجمته بعد اضافة الدوال اليه سواء عبر النقل copy&paste او ضم الملفات الى المشروع.
لابد من مراعاة بعض الأمور و هى:
1 - استبدال الداله Main بالداله DllMain و جعلها تعود بـ TRUE او واحد و ذلك حتى يمكن تحميل الداله بإستخدام LoadLibrary او اى من الدوال المشابهه.
2 - تحديد الـ Calling Convention للدوال مثل __stdcall او __cdecl او __fastcall حسب طبيعة عمل الداله و حسب تصميم المكتبه.
3 - استخدام __declspec(dllexport) مع الدوال التى تريدى تصديرها خارج المكتبه او صنع ملف defination لوضع اسماء الدوال التى تريدى تصديرها به او استخدام كلاهما معا.
و الله ولى التوفيق
مدونتي: C++ Tips and Tricks
يضاً , يجب الاخذ بالاعتبار ماهو نوع الـ DLL المطلوب , هناك الـ unmanaged DLL و ايضاً الـ Managed DLL ..
كما أنه يجب أن يكون نوع المشروع ككل ( ناتج المشروع ) ، معيّن على أساس أنه سينتج ملف DLL ( وهناك اعدادات أخرى على ما أذكر ) ،
صورة من Visual C++ 2008
تم تعديل هذه المشاركة بواسطة الشمري في 7 يناير 2010 في 13:41
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri
لقد قمت بانشاء ملف dll باستخدام ال dev-cpp و لكن عندما استدعيت هذه الدالة من الفيجوال بيسك حصل كراش للبرنامج
الدالة الموجودة في ملف dll كالتالي
char *encrypt (char *key;char *iv;char *plain;char *cipher)
و بصراحة انا لا اعرف ال call convention و سارفقلكم المشروع ربما يستطيع احد أن يوضح لي أكثر
و هذا هو المشروع
