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

انشئ مكتبة على الc++ واستعملها على الvb

بدأه DreamNet في 7 مايو 2008 · 0 رد · 507 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1

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

كنت قد قرأت منذ زمن على موقع developpez موضوع جميل جدا يتحدث عن الطرق الصحيحة لكتابة مكتبة بالسي يمكن استعمالها على الvb وسأحاول التطرق باختصار وبطريقتي الخاصة لتطبيق عملي للموضوع على vc++2005 مع الvb6

قبل البدء قد يطرح البعض سؤالا مهما : لماذا أعمل مكتبة بالسي ++ ولا أعملها مباشرة بالvb ؟

والجواب باختصار :

- هناك عدة أشياء لا يمكننا عملها على الvb6

- السرعة في الأداء فالسي تمتلك سرعة تنفيذ أكبر

التطبيق ينقسم إلى قسمين : قسم يختص في كتابة المكتبة على الvc++2005

والثاني كتابة كود الاستدعاء على الvb6

نبدأ مباشرة بانشاء مشروع فارغ على الvc++2005

post-23361-1210151947_thumb.jpg

بعدها نقوم باضافة ملف كود للمشروع ونقوم باعطاءه اسم طبعا

post-23361-1210151955_thumb.jpg

نضيف أيضا ملف header بامتداد h وملف آخر .def نعرف فيه المكتبة والدوال الموجودة فيها

في الأخير سيكون لدينا 3 ملفات :

ملف الكود .cpp

ملف header بامتداد .h

وملف تعريف .def

نبدأ بمثال بسيط نحاول به كتابة دالة تقوم بالجمع مثلا نقوم بتعريفها في ملف الهيدر

define EXPORT __declspec (dllexport)

EXPORT int __stdcall  TestFunction(int x1,int x2);

عرفنا هنا EXPORT والتي تقوم بتصدير الدالة TestFunction والتي ترجع قيمة من النوع int أي Integer

هنا استمعلنا __stdcall كي يتم تصدير الدالة تحت اسم TestFunction وليس باسم آخر (يعني بدون رموز )

في ملف الكود (امتداد cpp)

نكتب كود الدالة التي تقوم بالجمع :D

#include "definition.h"
int __stdcall TestFunction(int x1,int x2)
{
	return x1+x2;
}

هنا عملنا include لملف الهيدر الذي كتبناه قبل وسميناه مثلا definition.h

ثم قمنا بكتابة كود الدالة التي ترجع لنا مجموع الرقمين x1 وx2

لا ننسى ملف def

نكتب فيه معلومات المكتبة واسم الدالة الموجودة بها

LIBRARY VB_TEST
DESCRIPTION 
EXPORTS
  TestFunction

الملف يحوي على 3 أسطر أساسية للتعريف

الأول يمثل اسم المكتبة

الثاني غير مهم يمكن وضع وصف للمكتبة فيه

والثالث اسم الدالة او الداول الموجودة في المكتبة

بهذا يمكننا عمل بناء للمكتبة عن طريق build

طبعا مع مراعاة تغيير خاصية المشروع إلى Dynamic Library

post-23361-1210151961_thumb.jpg

طبعا الناتج سيكون موجود في مجلد debug الموجود به المشروع

والناتج سيكون VB_DLL1.dll

الآن نمر إلى كيفية كتابة كود الاستدعاء من الvb6

يجب مراعاة وجود المكتبة اما مع مشروع الvb6 أو في مجلد النظام system32

طبعا المكتبة المنشئة بها دالة اسمها TestFunction موجودة في الملف VB_DLL1.dll ولها 2 برامتر من النوع integer وترجع قيمة من النوع integer أيضا

لذلك نكتب التصريح التالي مثل أي تصريح بدالة API

Private Declare Function TestFunction Lib "VB_DLL1.dll" (ByVal x1 As Integer, ByVal x2 As Integer) As Integer

الدالة الآن جاهزة للاستعمال :D

MsgBox TestFunction(10, 20)

ياترى هل سيكون الناتج 30 ؟ :wub:

بالتوفيق للجميع

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…