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

كيف اصمم مكتبة DLL خاصة بى ؟

مغلق
بدأه Nokia_2006 في 24 فبراير 2006 · 13 رد · 1,754 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

انا باقالى فترة بستخدم API واشعر انها سهلة اوى فى استخدمها

ولكن عندما انوى الى تصميم مكتبة DLL جديدة خاصة بى لا اعرف

ياريت لو احد يدلنى كيف اصمم المكتبة باستخدام لغة السى ودوال API وما هى الدالة DLLMain

كيف اصمم مكتبة عن طريق دوال API نفسها مع لغة السى

اقتباس

كل الامثلة الموجودة بالانترنت سواء بالسى ++  او MFC  بصراحة تعبت  كل نتائج الانترنت MFC  لا غير
لايوجد طريقة واحدة  واضحة باستخدام API 

وشكرا
ياريت تساعدونى بجد لان عيونى باظت من البحث على النت

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 26 يونيو 2014 في 21:44 — السبب: add some tags

#3

لا يا اخى انا بسأل على شىء تانى خالص وهو كيف انشىء المكتبة باستخدام API نفسها بهذه الدوال

dll main

load libraryEx

dllentrypoint

free library

انا اقصد ازى انشىء مكتبة باستخدمهم ليس بالاعتماد على الفيجوال سى او خدمات يقدمها المترجم وعموما انا لا اعمل على منتجات ميكروسوفت

انا بعمل مع devc++4 من بورلاند

ياريت مثال كيف اصممها من خلال c+ api فقط

#4

طيب , حقك علي :D

بس سؤال , انت شاهدت الروابط ولا لاء ؟

عموماً LoadLibrary , GetProcAddress, FreeLibrary , تستخدم لاستدعاء الدوال من الDLL

اقرأ الوصلات وراجع المستندات الخاصة بالمترجم عندك , لأن الكود المفروض انه يعمل عندك ايضا , لأنه بيعمل بالـ API B)

http://www.experts-exchange.com/Programmin...Q_20806251.html

تم تعديل هذه المشاركة بواسطة Asm4all في 24 فبراير 2006 في 20:10

#5

طيب ايه فائدة الدالة DLLMain

#6

عزيزي Nokia_2006

كيف تريد أن تعمل شئ لم تقرأ عنه ؟؟

اقرأ كل ما كتب هنا

http://msdn.microsoft.com/library/default....k_libraries.asp

ستجد معلومات عن مكتبات DLL , وستجد شرح عن الدالة DllMain ..

لا بد من قراءة المعلومات في الوصلات

About Dynamic-Link Libraries

Using Dynamic-Link Libraries

Dynamic-Link Library Reference

بعد أن تتعرف على مفهوم مكتبات DLL وأسياساته وما يتعلق به بامكانك الإطلاع على الوصلات التي وضعها الأخ Asm4all ...

إقتناء كتاب ورقي أو الكتروني في هذا المجال قد يفيد كثيراً وسيسهل عليك المهمة ...

DevC++ فيما أعلمه أنها ليست لشركة بورلاند ...

وكما قال الأخ Asm4all ستجد معلومات عن طريقة عمل مكتبات DLL في مستندات بئية التطوير ...

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#7

مشكور اخى cipher والاستاذ Asm4all

#8

والله يا جماعة انا شاكر تعاونكم معايا جدا

لكن انا محتاج اعرف كيفية تصميم مكتبة

باستخدام لغة السى مع دوال API

المواقع الذى وضعتم روابطها مش بتشتغل معايا خالص اولا لانها كلها تتعامل الفيجوال سى ++

من ناحية انى ساقوم بفتح مشروع من النوع DLL ثم اكتب الوظائف داخلة

لا ليس هذا مااريدة

انا اريد انشاء مكتبة عن طريق لغة السى و دوال API فقط كيف ياريت اى احد يعطينى مثال بسيط او الطريقة العامة لتصميمه

تعبت جدا

اما مى مكتبة NSDN فيها كلام كتير اوى وانا مش عارف اعمل ايه

شويه يقول اكتب سورس كود كتير شويه يقول استخدم DLLMain

انا مش عاوز اصمم مكتبة بطريقة انى اقوم بفتح مشروع من نوع DLL ثم اكتب الوظائف بداخله

انا بستاذنكم لو اى احد يمكنه وضع مثال بسيط عن الطريقة المستخدمة

انا اريد انشاء مكتبة عن طريق لغة السى و دوال API فقط

http://msdn.microsoft.com/library/default....k_libraries.asp

وهذا الرابط الذى ابحث فيه

تم تعديل هذه المشاركة بواسطة Nokia_2006 في 28 فبراير 2006 في 02:14

#9

ياحمادة ضع السؤال بشكل أكثر دقة .

ما هو الـ compiler الذي تعمل عليه ؟؟

إن كان فيجوال سي وهذا ما اعتقده فما الذي تقصده بــ

اقتباس
انا اريد انشاء مكتبة عن طريق لغة السى و دوال API فقط كيف ياريت اى احد يعطينى مثال بسيط او الطريقة العامة لتصميمه

حين تضع سؤال ضع بيئة التطوير التي تستخدمها والنظام الذي تستخدمه وحاول تشرح الموضوع بدون تسرع ...

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#10

انا بستخدم DEV C++4 من بورلاند

الموضوع ما له علاقة ببيئة التطوير اطلاقا

لانى استخدم دوال API

انا بسال على الطريقة العامة لتصميم ملف DLL بدون استخدام مشروع من نوع DLL project الذى يقدمة المترجم ضمن قائمة المشروعات

يعنى انا بسال على الطريقة من ناحية

استخدام ملفات ذات الامتداد edit.cpp او edit.h وبالاضافة الى مكتبة API فقط ودوال التحكم فى تصميم مكتبات ربط ديناميكى مثل DLLMain و Loadlibrary

فقط لاغير

اذا نظرت الى DLLMain ستجد انها تشبه WinMain

هل هى تعتبر كبداية تنفيذ للكود

وياريت اعرف ما هى البارمترات الخاصة بها DllMain

وكمان ما الفرق بين LoadLibrary و FreeLibrary

مش عارف اقول ايه تانى

ياجماعة انا تعبت جدا فى عملية البحث عن شىء بيشرح هذه الطريقة الذى اريدها

تم تعديل هذه المشاركة بواسطة Nokia_2006 في 28 فبراير 2006 في 05:54

#11

طيب , حقك عليّ!

ما تريد عمله قام به الـ IDE الذي تستخدمه ... وإن كنت مصراً على ذلك راجع

http://www.emmestech.com/colin_peters_tuto.../dll/index.html

http://www.emmestech.com/colin_peters_tuto...ls/dlltool.html

http://sourceware.org/binutils/docs-2.16/b...ol.html#dlltool

http://sourceware.org/binutils/docs-2.12/b...fo/dlltool.html

كما ذكرت لك مسبقاً DEVC++ ليس من منتجات بورلاند هو من منتجات bloodshed

الكود المصدري تجده هنا:

http://www.bloodshed.net/devcpp.html

اقتباس
وكمان ما الفرق بين LoadLibrary و FreeLibrary

هذا السؤال يوحي بأنك لم تقرأ أي معلومات عن الدالتين حيث أن إسميهما يدل على عملهما وللمزيد من المعلومات راجع MSDN . إقرأ ما كتب هناك على مهلك ولا تتسرع ...

اقتباس
ودوال التحكم فى تصميم مكتبات ربط ديناميكى مثل DLLMain و Loadlibrary

من قال لك أن LoadLibrary تستخد للتحكم في تصميم مكتبات DLL .

حظ موفق

تم تعديل هذه المشاركة بواسطة cipher في 28 فبراير 2006 في 08:14

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#12

انا عارف ان الدالة LoadLibrary تستخدم لتحميل ملف DLL المستدعى الى الذاكرة لكى تتمكن البرامج من التعامل معه واستخدام الدوال عاوز اعرف الفرق بين الدالتين

على العموم متشكر اخوى على الروابط

#13
اقتباس
الموضوع ما له علاقة ببيئة التطوير اطلاقا

لانى استخدم دوال API

انا بسال على الطريقة العامة لتصميم ملف DLL بدون استخدام مشروع من نوع DLL project الذى يقدمة المترجم ضمن قائمة المشروعات

يعنى انا بسال على الطريقة من ناحية

استخدام ملفات ذات الامتداد edit.cpp او edit.h وبالاضافة الى مكتبة API فقط ودوال التحكم فى تصميم مكتبات ربط ديناميكى

طيب , انت كده عايز تشتغل شغل الـ IDE كما يقول لك الأخ cipher

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

الكود سيظل كما هو لن يتغير ببساطة لأن كود السي شكله كده , DllMain في مكتبات الـ DLL هي main في الملفات التنفيذية للكونسول هي WinMain في الويندوز , يعني بداية تنفيذ البرنامج

عموما عمل ترجمة و ربط يدوي لن يفيد شيء فبدل من جعل المترجم يقوم بعملية الترجمة والربط المناسبه لنوع المشروع ستقوم بها انت , مثلا لو تستخدم gcc (لا يحتوي على IDE ولهذا يحتاج منك سطور الترجمة والربط يدويا)

gcc -mdll -o junk.tmp -Wl,--base-file,base.tmp bar.o

del junk.tmp

dlltool --dllname bar.dll --base-file base.tmp --output-exp temp.exp --def bar.def

del base.tmp

gcc -mdll -o bar.dll bar.o -Wl,temp.exp

del temp.exp

هذا مل يقوم به الـ IDE عند الضغط على Build DLL في حالة كونك مختار مشروع من نوع DLL , هو مش بيضيف كود , هو بيضيف مفاتيح فقط اثناء الترجمة والربط

عموما تفاصيل كيفية عمل نفس الشغل على المترجم عندك موجوده في مستنداته , اقرأ بنفسك

اقتباس
انا عارف ان الدالة LoadLibrary تستخدم لتحميل ملف DLL المستدعى الى الذاكرة لكى تتمكن البرامج من التعامل معه واستخدام الدوال عاوز اعرف الفرق بين الدالتين

FreeLibrary بقى بتشيل الـ DLL من الذاكرة بعد ما انتهيت من استخدامها بعد ما كنت حملتها بال LoadLibrary

حماده, الكلام ده مكتوب كويس جدا في MSDN وفي اي كتاب بيشرح API

#14

ما انا قلت أكثر من مرة يجب قراءة MSDN جيداً لكن ...

وقلت بقراءة مستندات بيئة التطوير ...

دا انا نزلت DevCPP عشان هذا السؤال ...

وحين اطلعت على مجلد bin لاحظت انه بيستعمل gcc و dlltool وغيرها لهذا وضعت الروابط في أخر رد لي ...

ذكرت مرة أن الكثير من الشباب -على الاقل انا واحد منهم - نظل نبحث عن حل لمشكلة لأسابيع بل لشهور ...

اقتباس
هذا السؤال يوحي بأنك لم تقرأ أي معلومات عن الدالتين حيث أن إسميهما يدل على عملهما وللمزيد من المعلومات راجع MSDN . إقرأ ما كتب هناك على مهلك ولا تتسرع ...

معلش يا حمادة , انا كنت مضطر اكتب هذا الكلام لاني اريدك تتأنى أثناء القراءة واريد تعتمد على نفسك أولاً ..

اتمنى أنك تكون فهمت قصدي ومرحباً بأسئلة أخرى ..

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

هذا الموضوع مغلق.

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