• 0
Nokia_2006

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

سؤال

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

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

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

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

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

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

تم تعديل بواسطه مصطفى 36a2
add some tags
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

13 إجابة على هذا السؤال .

  • 0

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

dll main

load libraryEx

dllentrypoint

free library

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

تم تعديل بواسطه Asm4all
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عزيزي 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 في مستندات بئية التطوير ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

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

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

تعبت جدا

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

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

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

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

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

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

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

تم تعديل بواسطه Nokia_2006
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

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

فقط لاغير

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

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

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

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

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

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

تم تعديل بواسطه Nokia_2006
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

ما تريد عمله قام به الـ 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
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

لانى استخدم دوال 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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .